C#是一個(gè)面向?qū)ο缶幊陶Z(yǔ)言,同時(shí)在JSON解析方面也有著很好的表現(xiàn)。它作為一種動(dòng)態(tài)語(yǔ)言,可以很方便地將JSON數(shù)據(jù)轉(zhuǎn)化成對(duì)象或者動(dòng)態(tài)對(duì)象,并且可以進(jìn)行簡(jiǎn)單地操作和處理。
dynamic json = JsonConvert.DeserializeObject("{\"name\":\"Tom\",\"age\":18}");
string name = json.name; // Tom
int age = json.age; // 18
可以看到,通過(guò)JsonConvert.DeserializeObject將JSON數(shù)據(jù)轉(zhuǎn)換成動(dòng)態(tài)類型的對(duì)象后,我們可以通過(guò)屬性名的方式獲取其中的數(shù)據(jù)。
與此同時(shí),我們也可以將動(dòng)態(tài)類型對(duì)象轉(zhuǎn)換成指定的類型:
dynamic student = JsonConvert.DeserializeObject("{\"name\":\"Tom\",\"age\":18}");
Student s = student;
Console.WriteLine(s.Name + " is " + s.Age + " years old.");
// 定義Student類
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public static explicit operator Student (dynamic obj)
{
Student s = new Student();
s.Name = obj.name;
s.Age = obj.age;
return s;
}
}
在上述代碼中,我們通過(guò)定義一個(gè)Student類,并重載了explicit operator運(yùn)算符,將動(dòng)態(tài)類型對(duì)象顯式地轉(zhuǎn)換成Student類型對(duì)象。
上述代碼僅僅是動(dòng)態(tài)類型對(duì)象與指定類型對(duì)象之間轉(zhuǎn)換的一種方式,C#還提供了很多其他的JSON操作方式,例如使用JsonConvert.SerializeObject將對(duì)象序列化為JSON格式的字符串等。