【发布时间】:2013-11-14 00:42:54
【问题描述】:
所以在我的应用程序中,我必须得到一个 JSON 字符串。 它可以是一个城市或城市列表。
在 City 类中,我有这个:
public class City
{
public string id { get; set; }
public string country { get; set; }
public string region { get; set; }
public string city { get; set; }
public string latitude { get; set; }
public string longitude { get; set; }
public string comment { get; set; }
public bool wasThereAnError { get; set; }
public class CityResponse
{
public string status { get; set; }
public string message { get; set; }
//public City result { get; set; }
public List<City> result { get; set; }
}
所以它使用 List 结果来存储数据。 当我得到一个 JSON 数组时,这很好用,它可以轻松地存储它们。 但是,如果我只查询 1 个城市,我会得到一个关于它需要数组的异常。 这是我的通话代码:
async private Task<City.CityResponse> GetCityInformation(string url)
{
var client = new HttpClient();
var response = await client.GetAsync(new Uri(url));
string result = await response.Content.ReadAsStringAsync();
var cityRoot = JsonConvert.DeserializeObject<City.CityResponse>(result);
return cityRoot;
}
我也可以在列表中存储 1 个城市吗?还是我需要开设一个单独的城市课程,或者我该怎么做?谢谢
【问题讨论】:
-
见这里:stackoverflow.com/questions/11126242/…,接受后的下一个答案都会给你解决方案
-
我不确定...如果您在 CityResponse 中添加一个额外的属性
City Result(不同的拼写),它会填充一个值吗?这样你就可以处理setter了 -
@AndyOHart 是否可以覆盖/扩展默认解串器?虽然我更愿意强制数据源发送正确的类型...
-
对于单个城市的情况,您可以将城市格式化为一个包含一个元素的数组吗?看起来远程服务器的合同有点松散。
-
@AndyOHart 他的意思是为您提供 json 的服务器发送单个值而不是具有 1 个值的数组,因此您应该对该服务器执行一些操作:)
标签: c# json object serialization set