您的位置:首页 > Web前端 > JavaScript

Windows Phone 7开发遇到的事:解析JSON

2012-10-16 18:53 435 查看
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,

"Family":[]

}
]

}

先根据目标JSON写一个Person类用来存放数据:

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public List<Person> Family { get; set; }
}


开始解析:

string jsonString = "{\"Name\":\"I\",\"Age\":25,\"Family\":[{\"Name\":\"mon\",\"Age\":50,\"Family\":[]},{\"Name\":\"dad\",\"Age\":50,\"Family\":[]}]}";

//得到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可以知道这个属性的类型。



2.json["属性名"]是那个类型才能转为其对应的类型,否则为null。



构造

简单,就一句代码。

//这个person就是之前jsonString解析出来那个person
string s = JsonConvert.SerializeObject(person);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: