C# 返回json数据

dys_198102 2012-12-06 03:25:44
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,还有其他方法吗?请指点。。。。
...全文
9417 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbirds 2013-04-26
  • 打赏
  • 举报
回复

Persions p = new Persions();
        p.Add(new Persion { Name = "Changkun", Age = 15, Address = "Beijing" });
        p.Add(new Persion { Name = "zhangkun", Age = 25, Address = "Beijing" });

        string json = p.ConvertJsonString();
        return json;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///Persion 的摘要说明
/// </summary>
public class Persion
{
    public Persion()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

    string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    int age;

    public int Age
    {
        get { return age; }
        set { age = value; }
    }
    string address;

    public string Address
    {
        get { return address; }
        set { address = value; }
    }
}


/// <summary>
/// PersionsView
/// </summary>
public class Persions //: System.Collections.IList
{
    System.Collections.Generic.List<Persion> items = new List<Persion>();
    public void Add(Persion p)
    {
        this.items.Add(p);
    }

    public string ConvertJsonString()
    {
        System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
        string json = js.Serialize(this.items);
        return json;
    }

    public Persion ConvertJsonDeserialize(string jsonstring)
    {
        System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
        return js.Deserialize<Persion>(jsonstring);
    }

 
}
Assassin_ 2012-12-07
  • 打赏
  • 举报
回复

调用:
 List<xxxxxx> list = Models.CommonTools.JsonDeserialize<List<xxxxxx>>(CarCookie.Value);//反序列化

string JsonString = Models.CommonTools.JsonSerializer<List<xxx>>(J_car_List);//序列化
Assassin_ 2012-12-07
  • 打赏
  • 举报
回复

        /// <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;
            }
        }
卧_槽 2012-12-07
  • 打赏
  • 举报
回复
.net自带序列化和反序列化方法。
dys_198102 2012-12-07
  • 打赏
  • 举报
回复
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]很多。。。 }
ouyangbin523 2012-12-07
  • 打赏
  • 举报
回复
可以选择json.net
知擎物联 2012-12-07
  • 打赏
  • 举报
回复
用MVC开发吧。返回一个JsonResult相当简单。
  • 打赏
  • 举报
回复
引用 楼主 dys_198102 的回复:
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) ……
.net有直接对对象进行json序列化的方法。 第三方开源类库,可以选择json.net。
dys_198102 2012-12-06
  • 打赏
  • 举报
回复
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]很多。。。 }
dys_198102 2012-12-06
  • 打赏
  • 举报
回复
找到原因了,是因为我把js独立出来了,放在了 <script language="javascript" type="text/javascript" src="js/json.js"></script> 我把这个js提出来,放到页面里就可以了。 想问下,jquery怎么接收来自服务器返回的json???
dys_198102 2012-12-06
  • 打赏
  • 举报
回复
$.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: ^
在路上20130607 2012-12-06
  • 打赏
  • 举报
回复
感觉和你的需求差不多

      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); 

在路上20130607 2012-12-06
  • 打赏
  • 举报
回复
引用 2 楼 luoSaiMingJavaAndC 的回复:
。net for json
http://json.codeplex.com/ 说反了··
dys_198102 2012-12-06
  • 打赏
  • 举报
回复
我现在要在服务器端输出json数据,输出后当然要用jquery来获取了
在路上20130607 2012-12-06
  • 打赏
  • 举报
回复
。net for json
枫c_2012 2012-12-06
  • 打赏
  • 举报
回复
用jquery

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧