C \ # JSon 직렬 화 도구 -- Newtonsoft. JSon 소개 및 사용

Newtonsoft. JSon 은. Net 에서 개 원 된 JSon 직렬 화 와 반 직렬 화 도구 입 니 다. 공식 주소:http://www.newtonsoft.com/json。
기능 이 비교적 많 고 효율 이 비교적 높 으 며 정부 에서 비교 데 이 터 를 제시 하 다.
50% faster than DataContractJsonSerializer, and 250% faster than JavaScriptSerializer.
비교적 자주 사용 하 는 기능 은 직렬 화 된 헤 어 직렬 화 외 에 도 Linq To JSon, JSon Path, XML support 등 이 있다.
더 자세 한 내용 참고:http://www.newtonsoft.com/json/help/html/JsonNetVsDotNetSerializers.htm
사용 방법 간단:
사용 명령
Install-Package Newtonsoft.Json
또는 우 클릭, 프로젝트 > Nuget 패키지 관리, 추가
간단 한 사용 사례 는 다음 과 같다.
1. 정의 클래스:
/// 
///       
/// 
public class Student
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Class Class { get; set; }
}
/// 
///       
/// 
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(json1);
Console.WriteLine(stu2.Name + "---" + stu2.Class.Name);

//    ,        
List stuList = new List() { stu, stu2 };
string json2 = JsonConvert.SerializeObject(stuList);
Console.WriteLine(json2);
List stuList2 = JsonConvert.DeserializeObject>(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);

2. 문자열 의 직렬 화 를 제어 하고 더욱 편리 합 니 다.
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.DateFormatString = "yyyy-MM-dd";
string str = JsonConvert.SerializeObject(_Context.students.First(), settings);
Console.WriteLine(str);
{"sno":"101","sname":"  ","ssex":" ","sbirthday":"1976-02-20","_class":"95033"}

더 많은 상용 실례:
Linq To JSON 1
LINQ to JSON 실례 2 기타 참고 블 로그:http://www.cnblogs.com/freshman0216/p/4161800.html

좋은 웹페이지 즐겨찾기