我正在尝试使用google map api的网络服务发出网络请求,并获取json字符串,然后获取输入地址所需的经度和纬度。
一切都很好。我得到了我需要的json字符串。
现在我正在使用Json.net来解析字符串。
我不知道为什么,但我根本无法将其转换为JArray
。
这是json字符串
有人可以教我如何编写c#代码以获取lat
中的lng
和geometry > location
吗?
由于
这是我的代码和错误截图
答案 0 :(得分:2)
使用JSON.NET解析JSON时,您有几个选择。
最好的选择,恕我直言,是使用序列化将对象拉回到一个结构化类型,你可以像任何其他类一样操作它。为此,您可以看到serialization in the JSON.NET documentation(如果不够清楚,我还可以发布更多详细信息)。
如果你想要的只是获取地址,正如你在问题中列出的那样,你也可以使用LINQ功能来获取该信息。您可以使用类似于以下内容的代码将其关闭(关键在于SelectToken方法以撤回您需要的详细信息。)
Dim json As Newtonsoft.Json.Linq.JObject
json = Newtonsoft.Json.Linq.JObject.Parse(jsonString)
json.SelectToken("results.formatted_address").ToString()
您还可以使用Linq的所有正常功能来遍历您所期望的JSON。另请参阅LINQ文档。
答案 1 :(得分:1)
[我意识到这是一个古老的问题,但是有机会帮助别人......]
这里的问题是json["results"]
是一个JArray
,但你不是像一个人那样查询它。您需要使用数组索引来获取第一个(在这种情况下),然后您可以访问其中的对象。
string address = json["results"][0]["formatted_address"].Value<string>();
要获得纬度和经度,您可以这样做:
JToken location = json["results"][0]["geometry"]["location"];
double lat = location["lat"].Value<double>();
double lng = location["lng"].Value<double>();