Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Newtonsoft.Json(Json.Net)学习笔记大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地http://json.codeplex.com/)。

下面是Json序列化和反序列化的简单封装:

    /// <sumMary>
    /// Json帮助类
    </sumMary>
    public class JsonHelper
    {
        <sumMary>
         将对象序列化为JSON格式
        </sumMary>
        <param name="o">对象</param>
        <returns>json字符串</returns>
        static String serializeObject(object o)
        {
            String json = JsonConvert.serializeObject(o);
            return json;
        }

         解析JSON字符串生成对象实体
        <typeparam name="T">对象类型</typeparam>
        <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})对象实体static T DeserializeJsonToObject<T>(String json) where T : class
        {
            Jsonserializer serializer = new Jsonserializer();
            StringReader sr = new StringReader(json);
            object o = serializer.Deserialize(new JsontextReader(sr),typeof(T));
            T t = o as T;
            return t;
        }

         解析JSON数组生成对象实体集合
        json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])对象实体集合static List<T> DeserializeJsonToList<T>(typeof(List<T>));
            List<T> list = o as List<T>;
            return list;
        }

         反序列化JSON到给定的匿名对象.
        匿名对象类型<param name="anonymousTypeObject">匿名对象static T DeserializeAnonymousType<T>(String json,T anonymousTypeObject)
        {
            T t = JsonConvert.DeserializeAnonymousType(json,anonymousTypeObject);
            return t;
        }
    }

为进一步理解Newtonsoft,写了一些测试的例子:

Json测试 class JsonTest : IRun { void Run() { student sdudent = new student(); sdudent.ID = 1; sdudent.Name = "陈晨"; sdudent.NickName = 石子儿"; sdudent.Class = new Class() { Name = Cs0216",ID = 0216 }; //实体序列化和反序列化 String json1 = JsonHelper.serializeObject(sdudent); json1 : {"ID":1,"Name":"陈晨","NickName":"石子儿","Class":{"ID":216,"Name":"Cs0216"}} student sdudent1 = JsonHelper.DeserializeJsonToObject<student>(json1); 实体集合序列化和反序列化 List<student> sdudentList = new List<student>() { sdudent,sdudent1 }; String json2 = JsonHelper.serializeObject(sdudentList); json: [{"ID":1,"Name":"Cs0216"}},{"ID":1,"Name":"Cs0216"}}] List<student> sdudentList2 = JsonHelper.DeserializeJsonToList<student>(json2); DataTable序列化和反序列化 DataTable dt = new DataTable(); dt.Tablename = student"; dt.columns.Add(IDtypeof(int)); dt.columns.Add(Name"); dt.columns.Add(NickName"); Da@R_480_2301@w dr = dt.NewRow(); dr["] = 112; dr[战三"; dr[小三"; dt.Rows.Add(dr); String json3 = JsonHelper.serializeObject(dt); json3 : [{"ID":112,"Name":"战三","NickName":"小三"}] DataTable sdudentDt3 = JsonHelper.DeserializeJsonToObject<DataTable>(json3); List<student> sdudentList3 = JsonHelper.DeserializeJsonToList<student>(json3); 验证对象和数组 student sdudent4 = JsonHelper.DeserializeJsonToObject<student>({\"ID\":\"112\",\"Name\":\"石子儿\"}"); List<student> sdudentList4 = JsonHelper.DeserializeJsonToList<student>([{\"ID\":\"112\",\"Name\":\"石子儿\"}]"); 匿名对象解析 var tempEntity = new { ID = 0,Name = String.Empty }; String json5 = JsonHelper.serializeObject(tempEntity); json5 : {"ID":0,"Name":""} tempEntity = JsonHelper.DeserializeAnonymousType(",tempEntity); var tempstudent = new student(); tempstudent = JsonHelper.DeserializeAnonymousType(:rgb(128,tempstudent); Console.Read(); } } 学生信息实体 class student { int ID { get; set; } String Name { String NickName { public Class Class { set; } } 学生班级实体 class Class { set; } }
使用Json帮助类时,有两点需要注意下:

1. 通常使用调用实体序列化serializeObject()和反序列化DeserializeJsonToObject()两个方法就可以了。有些情况下我们解析json字符串时,可能没有对应的实体类型(或者说不想添加对应的实体类),这时候可以用匿名对象解析方法DeserializeAnonymousType(),方便快捷,对应代码如下:

            :rgb(0,tempEntity);
            Console.WriteLine(tempEntity.ID + :" + tempEntity.Name);

2.Json的两种结构数组和对象解析时略有不同。Json对象一般转换成实体,Json数组一般转换成实体集合。代码如下:

            ");

简单解释下Json对象和数组的含义:

对象是以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:{"ID":"112","Name":"石子儿"}。

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。例如:[{"ID":"112","Name":"石子儿"},{"ID":"113","Name":"陈晨"}]。

本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的Newtonsoft.Json(Json.Net)学习笔记全部内容,希望文章能够帮你解决Newtonsoft.Json(Json.Net)学习笔记所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。