首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 回到json数据

2012-12-18 
C# 返回json数据var ms from n in CC_ where n.sales_account sales && n.storefront st orderby

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来获取了
[其他解释]
引用:
。net  for  json


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]很多。。。
}
[其他解释]

引用:
var ms = from n in CC_ where n.sales_account == sales &amp;&amp; n.storefront == st orderby n.customer_name select n;
Response.Write("{[");
            foreach (var s in ms)
        ……


.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);//序列化

热点排行