C# 返回json数据
var ms = from n in CC_ where n.sales_account == sales && n.storefront == st orderby n.customer_name select n;
Response.Write("{[");
foreach (var s in ms)
{
Response.Write("sales:"+s.sales);
Response.Write("cu_name:"+s.customer_name);
}
Response.Write("]}");
除了这种方式返回json,还有其他方法吗?请指点。。。。
[最优解释]
感觉和你的需求差不多
var orders = db.Orders.Where(o => o.OrderID <= 10250);//这是取得一系列对象
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
string result = JsonConvert.SerializeObject(new { Orders = orders }, Formatting.Indented, settings);//需要注意的是,如果返回的是一个集合,那么还要在它的上面再封装一个类。否则客户端收到会出错的。
context.Response.Write(result);
[其他解释]
用jquery
[其他解释]
。net for json
[其他解释]
我现在要在服务器端输出json数据,输出后当然要用jquery来获取了
[其他解释]
http://json.codeplex.com/
说反了
[其他解释]
$.ajax({
type:'POST',
url:'AjaxXD.ashx?action=getXDlist',
data:{sales:$("#sales").val()},
error:function(){$("#con_main").html("<span style='color:red'>数据出错!</span>");},
dataType:'json',
success:function(msg){
alert(msg.name);
if(msg!="")
{
for(var q in msg)
为什么有时候返回的是json数据,有时候返回的XML解析错误:未找到元素 位置:moz-nullprincipal:{11b1281c-1713-4ea5-aea8-afca8acc798e} 行:1,列:1:
^
[其他解释]
找到原因了,是因为我把js独立出来了,放在了
<script language="javascript" type="text/javascript" src="js/json.js"></script>
我把这个js提出来,放到页面里就可以了。
想问下,jquery怎么接收来自服务器返回的json???
[其他解释]
C#:
var ms = from n in CC_ where n.sales_account == sales && n.storefront == st orderby n.customer_name select n;
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
StrResult = JsonConvert.SerializeObject(new { ms_ = ms }, Formatting.Indented, settings);
js:
success:function(msg){
if(msg!="")
{
for(var q in msg.ms_)
{
alert(q.ename); 这里并不能取到值,但alert(msg.ms_)可以看到[object]很多。。。
}
[其他解释]
.net有直接对对象进行json序列化的方法。
第三方开源类库,可以选择json.net。
[其他解释]
用MVC开发吧。返回一个JsonResult相当简单。
[其他解释]
可以选择json.net
[其他解释]
C#:
var ms = from n in CC_ where n.sales_account == sales && n.storefront == st orderby n.customer_name select n;
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
StrResult = JsonConvert.SerializeObject(new { ms_ = ms }, Formatting.Indented, settings);//我这里已序列化了
js:
success:function(msg){//这里也可以接收json,只是下边的提取有问题
if(msg!="")
{
for(var q in msg.ms_)
{
alert(q.ename); 这里并不能取到值,但alert(msg.ms_)可以看到[object]很多。。。
}
[其他解释]
.net自带序列化和反序列化方法。
[其他解释]
/// <summary>
/// JSON序列化
/// </summary>
public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
//替换Json的Date字符串
string p = @"\\/Date\((\d+)\+\d+\)\\/";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString, matchEvaluator);
return jsonString;
}
/// <summary>
/// JSON反序列化
/// </summary>
public static T JsonDeserialize<T>(string jsonString)
{
//将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式
string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString, matchEvaluator);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
T obj = (T)ser.ReadObject(ms);
return obj;
}
}
[其他解释]
调用:
List<xxxxxx> list = Models.CommonTools.JsonDeserialize<List<xxxxxx>>(CarCookie.Value);//反序列化
string JsonString = Models.CommonTools.JsonSerializer<List<xxx>>(J_car_List);//序列化