C# google geolocation API 的 administrative_area_level_2 值来自 JsonConvert.DeserializeObject



从C#,JsonConvert我想获得administrative_area_level_2->long_name 的谷歌地理定位api值

 http://maps.googleapis.com/maps/api/geocode/json?address=T1X%200L3&sensor=true

我正在尝试的是:-

dynamic part = JsonConvert.DeserializeObject(responseJson);
    string name = part.results.address_components.types.administrative_area_level_2;

的正确方式是什么

将JSON粘贴到json2csharp,并在项目中创建所有建议的类。然后,我们可以将json字符串反序列化为RootObject,并从强类型对象轻松访问json的任何部分,例如:

var root = JsonConvert.DeserializeObject<RootObject>(responseJson);
var address_type = "administrative_area_level_2";
string name = root.results[0]
                  .address_components
                  .FirstOrDefault(o => o.types.Contains(address_type))
                  .long_name;

你也可以在不创建新类的情况下完成这一点,比如:

var root = JObject.Parse(responseJson);
var address_type = "administrative_area_level_2";
string name = root["results"][0]
                  ["address_components"]
                  .FirstOrDefault(a => (a["types"]).Select(t => (string)t)
                                                   .Contains(address_type))
                  ["long_name"];

如果你想让JsonConvert.DeserializeObject工作,你需要有相同的结构化对象和DeserializeObject<newObjectName>

result对象似乎并不复杂:对象列表可以是Arrays或ILists。

您可以使用:http://www.jsoneditoronline.org/以在更可查看的状态下解析结果。

如果你想要访问的方式(不那么优雅的方式),你可以尝试:

part["result"]["..."][0]

相关内容

  • 没有找到相关文章

最新更新