WP从服务器、API交换数据一般都是用JSON格式字符串。 下面介绍用Newtonsoft.Json来处理JSON。 准备 1.到 http://json.codeplex.com/ 下载Newtonsoft.Json类库(Json45r10.zip)。 2.解压引用Newtonsoft.Json.dll。 解析 目标JSON字符串: { Name:I, Age:25, Family: [ { Name:mom, Age:50, Family:[] }, { Name:dad, Age:50,
WP从服务器、API交换数据一般都是用JSON格式字符串。
下面介绍用Newtonsoft.Json来处理JSON。
准备
1.到 http://json.codeplex.com/ 下载Newtonsoft.Json类库(Json45r10.zip)。
![](http://www.silverlightchina.net/uploads/allimg/121016/193Z5O29-0.jpg)
2.解压引用Newtonsoft.Json.dll。
![](http://www.silverlightchina.net/uploads/allimg/121016/193Z56354-1.jpg)
解析
目标JSON字符串:
{
"Name":"I",
"Age":25,"
Family":
[
{
"Name":"mom",
"Age":50,
"Family":[]
},
{
"Name":"dad",
"Age":50,
"Family":[]
}
]
}
先根据目标JSON写一个Person类用来存放数据:
{
public string Name { get; set; }
public int Age { get; set; }
public List<Person> Family { get; set; }
}
开始解析:
//得到json对象(jsonString不是json字符串这里就会抛出异常)
JObject json = JObject.Parse(jsonString);
Person person = new Person();
//得到属性Name的值
person.Name = (string)json["Name"];
//Age的值
person.Age = (int)json["Age"];
//用下面的方法获得Family的值
person.Family = GetPersonListFromJArray(json["Family"] as JArray);
private List<Person> GetPersonListFromJArray(JArray jArray)
{
List<Person> list = new List<Person>();
if (jArray != null)
{
foreach (JObject jObject in jArray)
{
Person person = new Person();
person.Name = (string)jObject["Name"];
person.Age = (int)jObject["Age"];
person.Family = GetPersonListFromJArray(jObject["Family"] as JArray);
list.Add(person);
}
}
return list;
}
这样json就解析出来啦。下面我们看看一些小细节。
1.json["属性名"].Type可以知道这个属性的类型。
![](http://www.silverlightchina.net/uploads/allimg/121016/193Z53335-2.jpg)
2.json["属性名"]是那个类型才能转为其对应的类型,否则为null。
![](http://www.silverlightchina.net/uploads/allimg/121016/193Z55506-3.jpg)
构造
简单,就一句代码。
//这个person就是之前jsonString解析出来那个person
string s = JsonConvert.SerializeObject(person);
//这个person就是之前jsonString解析出来那个person
string s = JsonConvert.SerializeObject(person);
![](http://www.silverlightchina.net/uploads/allimg/121016/193Z52Y0-4.jpg)