如何在C#中反序列化JSON?

pla*_*ezy 1 json deserialization c#-4.0

有人可以用这种格式帮助我以正确的方式反序列化json:

[
    {person: {name: "James", age:26}},
    {person: {name: "Mary", age:36}},
    {person: {name: "Kofi", age:46}}
]
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码如下:

WebRequest request = WebRequest.Create("url");
WebResponse response = request.GetResponse();

string json;

using (var sr = new StreamReader(response.GetResponseStream()))
{
    json = sr.ReadToEnd();
}

var serializer = new JavaScriptSerializer();

var persons= serializer.Deserialize<List<response>>(json);

foreach (var item in persons)
{
    Console.Write("name:" + item.name + " and age: " + item.age);
}
Run Code Online (Sandbox Code Playgroud)

我正在映射的类如下:

public class person
{
    public string name{get;set;}
    public int age{get; set;}
}

public class response
{
   public person person {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我不断为名称和年龄属性获取空值和空字符串.如果有人能帮助我,我会非常感激.

Her*_*des 5

使用内置的DataContractJsonSerializer类也是可能的.见例子:

WebRequest request = WebRequest.Create("url");
WebResponse response = request.GetResponse();

using (Stream stream = response.GetResponseStream())
{
   Type serializationTargetType = typeof(List<person>);
   DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(serializationTargetType);

   List<person> jsonDeserialized = (List<person>)jsonSerializer.ReadObject(stream);
}
Run Code Online (Sandbox Code Playgroud)