我不知道如何在.Net中编写用于反序列化JSON对象列表的类。
从JSON规范中我们可以了解到,以下内容是合法的JSON:
[
{
"precision": "zip",
"Latitude": 37.7668,
"Longitude": -122.3959,
"Address": "",
"City": "SAN FRANCISCO",
"State": "CA",
"Zip": "94107",
"Country": "US"
},
{
"precision": "zip",
"Latitude": 37.371991,
"Longitude": -122.026020,
"Address": "",
"City": "SUNNYVALE",
"State": "CA",
"Zip": "94085",
"Country": "US"
} ]
因此,我构建了这个类来处理反序列化:
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace JsonRfc{
[Serializable]
public class Location {
public string Precision;
public double Latitude;
public double Longitude;
public string Address;
public string City;
public string State;
public string Zip;
public string Country;
public Location(){}
public static Location DeserializedJson(string responseJson)
{
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
return jsSerializer.Deserialize<Location>(responseJson);
}
}
[Serializable]
public class Locations {
public List<Location> Location;
public Locations(){}
public static Locations DeserializedJson(string responseJson)
{
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
return jsSerializer.Deserialize<Locations>(responseJson);
}
}
}
尽管传递给方法的Json有效,但反序列化对象为空。
我尝试过的其他失败的方法包括:将Locations更改为数组而不是列表(所以:public Location[] Location;),并将其反序列化为location,即使Json包含位置数组。
那么,.Net开发人员应该如何反序列化对象数组呢? 我期望上述方法可行,但实际上并不可行。