JSON

 

JSON 已经是 JavaScript 标准的一部分。和 XML 一样,JSON 也是基于纯文本的数据格式。目前,主流的浏览器对 JSON 支持都非常完善。应用 JSON,我们可以从 XML 的解析中摆脱出来,对那些应用 Ajax 的 Web 2.0 网站来说,JSON 确实是目前最灵活的轻量级方案。

var j={"name":"Michael","address":
      {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
  }; 
JSON对象转为字符串?
浏览器预置对象JSON.stringify方法直接转换

.Net支持库:Newtonsoft.Json.dll

http://www.newtonsoft.com/json/help/html/Samples.htm

 

Linq to JSON

string json1 = @"{
              ""publicaccount"": {
                ""id"": ""1"",
                ""name"": ""abc""
              },
              ""root"": {
                ""messages"": [
                  {
                    ""id"": ""1"",
                    ""title"": ""messagetitle1"",
                    ""content"": ""helloworld"",
                    ""url"": ""http://web.abc""
                  },
                  {
                    ""id"": ""2"",
                    ""title"": ""messagetitle2"",
                    ""content"": """",
                    ""url"": ""http://web.abc/portal/hldjh/201404/t20140423_73322.htm""
                  }
                ]
              }
            }";
JSON string
    /// <summary>  
    /// DataTable 转换为List 集合  
    /// </summary>  
    /// <typeparam name="TResult">类型</typeparam>  
    /// <param name="dt">DataTable</param>  
    /// <returns></returns>  
    public static List<TResult> ToList<TResult>(DataTable dt) where TResult : class, new()
    {
        //创建一个属性的列表  
        List<PropertyInfo> prlist = new List<PropertyInfo>();
        //获取TResult的类型实例  反射的入口  
        Type t = typeof(TResult);
        //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表  
        Array.ForEach<PropertyInfo>(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); });
        //创建返回的集合  
        List<TResult> oblist = new List<TResult>();

        foreach (DataRow row in dt.Rows)
        {
            //创建TResult的实例  
            TResult ob = new TResult();
            //找到对应的数据  并赋值  
            prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); });
            //放入到返回的集合中.  
            oblist.Add(ob);
        }
        return oblist;
    }
DataTable->List
var result = from account in db.PublicAccount.ToList()
                         where account.Name.Contains(keyword)
                         select account;
            result = result.ToList();
            JObject json = new JObject(
                new JProperty(
                    "accounts",
                    new JArray(//帐号数组
                        result.Select(
                        r =>
                        new JObject(//账号对象
                            new JProperty(
                                "id", r.ID
                                ),
                                new JProperty(
                                "name", r.Name
                                ),
                                new JProperty(
                                "desc", r.Desc
                                )
                                )
                                )
                                )
                                )
                                );
Linq JSON

posted on 2014-07-17 17:30  yy2056  阅读(193)  评论(0编辑  收藏  举报

导航