Newtonsoft.Json.dll 的使用

来源:互联网 发布:物流app软件排名 编辑:程序博客网 时间:2024/06/07 22:50

1.类库说明

Newtonsoft.Json.dll是.NET 下开源的json格式序列号和反序列化的类库,利用此类库,可以方便地操作json数据,其中在反序列化时,可以直接将格式化的json数据处理成预定义的实体类,也可以生成对应的匿名类

2.环境配置

  • 1通过NuGet程序包直接配置
    在对应项目的引用选项上右键,在弹出菜单中选择”管理NuGet程序包”,在搜索框中搜索json,找到Newtonsoft.Json,等待安装完毕
    这里写图片描述
    这里写图片描述
  • 2.直接引用dll
    直接在项目中引用Newtonsoft.Json.dll即可

3.json序列化

1).预定义实体类

        /// <summary>        /// 用于测试的预定义实体类        /// </summary>        class JsonTest        {            /// <summary>            /// 初始化            /// </summary>            public void Init()            {                JsonTest test = new JsonTest();                test.Id = "2017";                test.Name = "测试数据";                test.Data = new List<string>() { "1", "2", "3", "4", "5" };            }            List<String> _Data = new List<string>();            public List<String> Data            {                get { return _Data; }                set { _Data = value; }            }            String _Name = String.Empty;            public String Name            {                get { return _Name; }                set { _Name = value; }            }            String _Id = String.Empty;            public String Id            {                get { return _Id; }                set { _Id = value; }            }        }

2).序列化自定义实体类的对象

        static void Main(string[] args)        {           SerializeTest();            Console.ReadLine();        }        public static void SerializeTest()        {            JsonTest test = new JsonTest();            test.Init();            String json = JsonConvert.SerializeObject(test,Formatting.Indented);            Console.WriteLine(json);        }

例子中使用了JsonConvert.SerializeObject的一个重载方法 Formatting是一个枚举类型,表示是否将json数据格式化,运行效果如下

这里写图片描述

4.反序列化

1).反序列化为预定义实体类

        static void Main(string[] args)        {           DeSerializeTest();            Console.ReadLine();        }        public static void DeSerializeTest()        {            String jsonstr = "{\"Id\":\"2017\",\"Name\":\"测试数据\",\"Data\":[\"1\",\"2\",\"3\",\"4\",\"5\"]}";            var test = JsonConvert.DeserializeObject<JsonTest>(jsonstr);            String str = "Id:{0}\nName:{1}\nData:{2}";            Console.WriteLine(str, test.Id, test.Name, String.Join(",", test.Data));        }

反序列化为实体类时,调用JsonConvert.DeserializeObject,参数为待序列化的json字符串,运行效果如下
这里写图片描述

1).反序列化为预定义实体类

需要引入名空间 using Newtonsoft.Json.Linq

        static void Main(string[] args)        {            DeSerializeTest_Anonymous();            Console.ReadLine();        }        public static void DeSerializeTest_Anonymous()        {            String jsonstr = "{\"Id\":\"2017\",\"Name\":\"测试数据\",\"Data\":[\"1\",\"2\",\"3\",\"4\",\"5\"]}";            var test = JsonConvert.DeserializeObject(jsonstr) as JObject;            String str = "Id:{0}\nName:{1}\nData:{2}";            Console.WriteLine(str, test["Id"], test["Name"], String.Join(",", test["Data"]));        }

运行结果
这里写图片描述

原创粉丝点击