2011-09-22 66 views
0

我正在嘗試使用google map api的web服務發出web請求,並獲取json字符串,然後獲取我需要的輸入地址的經度和緯度。使用Json.NET解析Google Maps API返回的結果

一切都很好。我得到了我需要的json字符串。

現在我正在使用Json.net來解析字符串。

我不知道爲什麼,但我根本無法將其轉換爲JArray

這裏是JSON字符串 enter image description here

誰能教我怎麼寫C#代碼,以獲得geometry > locationlatlng

感謝

這裏是我的代碼和錯誤截圖

enter image description here

回答

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文檔。

+0

這似乎是'VB',這個問題特別要求'C#' –

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>(); 
相關問題