JSON

C#操作JSON学习(3)

字号+ 作者:H5之家 来源:H5之家 2017-08-01 16:03 我要评论( )

下载地址 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Newtonsoft.Json;namespace JsonDemo{class Program{static void Main(string[] args){string personJson = {

下载地址

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Newtonsoft.Json; namespace JsonDemo { class Program { static void Main(string[] args) { string personJson = "{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}"; string allMoveJson = @"[{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]},{ 'FirstName': '小坦克2','LastName':'Tank xiao2', 'Age':'40', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}]"; // 反序列化 单个对象 Person oneMovie = JsonConvert.DeserializeObject<Person>(personJson); // 反序列化 对象集合 List<Person> allMovie = JsonConvert.DeserializeObject<List<Person>>(allMoveJson); Console.WriteLine(oneMovie.FirstName); Console.WriteLine(allMovie[1].FirstName); // 序列化 string afterJson = JsonConvert.SerializeObject(allMovie); } } public class Person { public String FirstName { get; set; } public String LastName { get; set; } public int Age { get; set; } public List<Book> Books { get; set; } } public class Book { public string BookName { get; set; } public string Price { get; set; } } }

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

C# Json序列化工具  Newtonsoft.Json简介和使用

Newtonsoft.Json,是.Net中开源的Json序列化和反序列化工具,官方地址: 。

功能比较多,效率比较高,官方给出对比数据

50% faster than DataContractJsonSerializer, and 250% faster than JavaScriptSerializer.

比较常用的功能除了序列化反序列化之外,还有 Linq To Json、Json Path、 XML support等

更多详情参考:

使用方法简单:

使用命令

Install-Package Newtonsoft.Json

或者右键,项目》Nuget包管理,添加

简答使用实例如下:

1.定义类:

/// <summary> /// 学生信息实体 /// </summary> public class Student { public int ID { get; set; } public string Name { get; set; } public Class Class { get; set; } } /// <summary> /// 学生班级实体 /// </summary> public class Class { public int ID { get; set; } public string Name { get; set; } } 2.序列化,反序列化 实体对象,实体集合,匿名对象:

Student stu = new Student(); stu.ID = 1; stu.Name = "张三"; stu.Class = new Class() { ID = 0121, Name = "CS0121" }; //使用方法1 //实体序列化、反序列化 //结果:{"ID":1,"Name":"张三","Class":{"ID":121,"Name":"CS0121"}} string json1 = JsonConvert.SerializeObject(stu); Console.WriteLine(json1); Student stu2 = JsonConvert.DeserializeObject<Student>(json1); Console.WriteLine(stu2.Name + "---" + stu2.Class.Name); //实体集合,序列化和反序列化 List<Student> stuList = new List<Student>() { stu, stu2 }; string json2 = JsonConvert.SerializeObject(stuList); Console.WriteLine(json2); List<Student> stuList2 = JsonConvert.DeserializeObject<List<Student>>(json2); foreach (var item in stuList2) { Console.WriteLine(item.Name + "----" + item.Class.Name); } //匿名对象的解析, //匿名独享的类型 obj.GetType().Name: "<>f__AnonymousType0`2" var obj = new { ID = 2, Name = "李四" }; string json3 = JsonConvert.SerializeObject(obj); Console.WriteLine(json3); object obj2 = JsonConvert.DeserializeAnonymousType(json3, obj); Console.WriteLine(obj2.GetType().GetProperty("ID").GetValue(obj2)); object obj3 = JsonConvert.DeserializeAnonymousType(json3, new { ID = default(int), Name = default(string) }); Console.WriteLine(obj3.GetType().GetProperty("ID").GetValue(obj3)); //匿名对象解析,可以传入现有类型,进行转换 Student stu3 = new Student(); stu3 = JsonConvert.DeserializeAnonymousType(json3, new Student()); Console.WriteLine(stu3.Name); 更多内容可以参考博客

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【源码分析】cJSON库学习

    【源码分析】cJSON库学习

    2017-08-01 18:00

  • 【转】JMeter学习(三十五)使用jmeter来发送json

    【转】JMeter学习(三十五)使用jmeter来发送json

    2017-08-01 16:02

  • Java 处理 JSON

    Java 处理 JSON

    2017-08-01 14:08

  • jquery ajax json 综合应用实例

    jquery ajax json 综合应用实例

    2017-08-01 14:07

网友点评