这是我为解决使用API所遇到的问题而编写的沙盒代码。我知道我需要枚举以下字典才能访问数据,但是我不知道简单的方法。这是我的玩具代码:
using Newtonsoft.Json;
JSON
{"response": {"country": {"778679": {"city": "MyCity"}}}}
类模型
public class Root
{
public Response response { get; set; }
}
public class Response
{
public Dictionary<int, Country> country { get; set; }
}
public class Country
{
public string city{ get; set; }
}
这是我目前的做法,但是没有用,因为我需要知道不断变化的ID号才能获得城市名称。
JsonConvert.DeserializeObject<Root>(Json).response.country[778679].city
返回:
"MyCity"
最不知道ID号的最简单方法是什么?
这就是我想要的访问方式。我可以通过数组的第一个值来获取键值或父属性的值本身的方法
JsonConvert.DeserializeObject<Root>(Json).response.country[0].city
//OR preferably
JsonConvert.DeserializeObject<Root>(Json).response.country.city
返回:
"MyCity"
如果您不知道要查找的城市的ID,则必须按名称查找城市。您可以使用FirstOrDefault
中的System.Linq
来做到这一点:
var data = JsonConvert.DeserializeObject<Root>(json);
var country = data.response.country.FirstOrDefault(kvp => kvp.Value.city == "MyCity");
Console.WriteLine(country.Value.city);
@@ JSteward,我不应该知道数据。我应该使用一个API并下载数据。问题在于此数据具有一个作为属性名称的数字,我必须知道该数字才能访问数据。因此,我无法执行kvp.Value.city == "MyCity"
,因为我不应该知道城市名称