所以当我从服务器获取JSON数据时,我想要构建一个City类。
public class City
{
public string id { get; set; }
public string country { get; set; }
public string region { get; set; }
public string mainCity { 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 List<City> result { get; set; }
}
public override string ToString()
{
return "\n\nID: \t\t" + id + "\nCountry: \t" + country + "\nRegion: \t\t" + region + "\nCity: \t\t" + mainCity + "\nLatitude: \t" + latitude + "\nLongitude: \t" + longitude + "\nComment: \t" + comment;
}
}
那是那里的课程。
所以当我查询例如:
{"status":"okay","result":{"id":1,"country":"US","region":"NY","city":"Valhalla","latitude":41.0877,"longitude":-73.7768,"comment":"890068 monkeys"}}
我想让City类填充相应的数据。 这是我获取数据的Web检索类。
async private Task<City> GetCityInformation(string url)
{
var client = new HttpClient();
var response = await client.GetAsync(new Uri(url));
string result = await response.Content.ReadAsStringAsync();
//var cityRootaaa = JsonConvert.DeserializeObject<City.CityResponse>(result);
var cityRoot = JsonConvert.DeserializeObject<City>(result);
return cityRoot;
}
}
然而,当我调试时,我可以看到没有任何东西被保存。 最初,我在City上的id上面有另一个状态字段,当我调试时,“okay”在状态字段中设置,但没有其他数据。 我不知道该怎么办? 谢谢你的帮助!
答案 0 :(得分:0)
您的json字符串包含具有两个属性status的状态和city对象的对象,因此您要反序列化字符串的类型应为:
public class CityResponse
{
public string status { get; set; }
public City result { get; set; }
}
现在你可以像这样反序列化
var cityResponse = JsonConvert.DeserializeObject<CityResponse>(result);
return cityResponse.City;
或者,如果您不想引入新类型,您也可以使用匿名对象
var cityResponseType = new { status = string.Empty, result = new City() };
var cityResponse = JsonConvert.DeserializeAnonymousType(result, cityResponseType);
return cityResponse.result;