在WP7中反序列化JSON

Dan*_*ell 5 .net c# json json.net windows-phone-7

我有这个JSON,我试图在Windows Phone上阅读.我一直在DataContractJsonSerializer和Json.NET 玩,但运气不好,特别是阅读每个'条目':

{"lastUpdated":"16:12","filterOut":[],"people":
[{"ID":"x","Name":"x","Age":"x"},{"ID":"x","Name":"x","Age":"x"},{"ID":"x","Name":"x","Age":"x"}],
 "serviceDisruptions":
  {
    "infoMessages":
    ["blah blah text"],
    "importantMessages":
    [],
    "criticalMessages":
    []
  }
}
Run Code Online (Sandbox Code Playgroud)

我关心的只是人物部分的条目.基本上我需要读取并遍历条目(包含ID,Name,Age值)并将它们添加到Collection或类中.(之后我填充了一个列表框.)

任何指针赞赏.

Jef*_*ata 6

我能够使用以下代码反序列化您的JSON字符串.这是在.NET 4控制台应用程序中测试的,并且希望也能在WP 7中运行.

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(PersonCollection));

string json =  "{\"lastUpdated\":\"16:12\",\"filterOut\":[],\"people\": [{\"ID\":\"a\",\"Name\":\"b\",\"Age\":\"c\"},{\"ID\":\"d\",\"Name\":\"e\",\"Age\":\"f\"},{\"ID\":\"x\",\"Name\":\"y\",\"Age\":\"z\"}], \"serviceDisruptions\": { \"infoMessages\": [\"blah blah text\"], \"importantMessages\": [], \"criticalMessages\": [] } }";

using (var stream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
    var people = (PersonCollection)serializer.ReadObject(stream);

    foreach(var person in people.People)
    {
        Console.WriteLine("ID: {0}, Name: {1}, Age: {2}", person.ID, person.Name, person.Age);
    }
}   
Run Code Online (Sandbox Code Playgroud)

使用以下数据类:

[DataContract]
public class PersonCollection
{
    [DataMember(Name = "people")]
    public IEnumerable<Person> People { get; set; }
}

[DataContract]
public class Person
{
    [DataMember]
    public string ID { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)