【发布时间】:2012-03-16 05:03:23
【问题描述】:
我正在尝试将 json 数据反序列化为模型类,但我失败了。这是我的工作:
public CountryModel GetCountries() {
using (WebClient client = new WebClient()) {
var result = client.DownloadString("http://api.worldbank.org/incomeLevels/LIC/countries?format=json");
var output = JsonConvert.DeserializeObject<List<CountryModel>>(result);
return output.First();
}
}
这是我的模型的样子:
public class CountryModel
{
public int Page { get; set; }
public int Pages { get; set; }
public int Per_Page { get; set; }
public int Total { get; set; }
public List<Country> Countries { get; set; }
}
public class Country
{
public int Id { get; set; }
public string Iso2Code { get; set; }
public string Name { get; set; }
public Region Region { get; set; }
}
public class Region
{
public int Id { get; set; }
public string Value { get; set; }
}
你可以看到我在这里得到的 Json:http://api.worldbank.org/incomeLevels/LIC/countries?format=json
这是我得到的错误:
无法将 JSON 数组反序列化为“Mvc4AsyncSample.Models.CountryModel”类型。第 1 行,位置 1。
【问题讨论】:
-
这似乎不是一个好的 JSON 表示。如果你使用 XML 格式可能会更好。
-
是的,我想是的。他们将单个对象放入数组中。我认为它不应该在那里。有什么可行的方法吗?
-
XML 更加简洁,我会这样做:api.worldbank.org/incomeLevels/LIC/countries?format=xml
-
@PaulTyng 我认为,AFAIK,Json.NET 序列化比 .NET XML 序列化快得多。这就是我坚持使用 JSON 的原因。但我不确定我在这里是否 100% 正确。
-
@tugberk 啊,我明白了,如果您关心速度,尽管您可能想查看其他 JSON 库:theburningmonk.com/2011/08/performance-test-json-serializers(或 code.google.com/p/protobuf-net)
标签: c# .net json serialization json.net