从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]