2011-05-09 92 views
3

如何將JSON字符串從一個鍵導航到另一個嵌套鍵並獲取值?我有以下字符串解析JSON字符串的最簡單方法

{ "data" : { "current_condition" : [ { "cloudcover" : "75", 
      "humidity" : "29", 
      "observation_time" : "07:59 PM", 
      "precipMM" : "0.0", 
      "pressure" : "1011", 
      "temp_C" : "19", 
      "temp_F" : "67", 
      "visibility" : "16", 
      "weatherCode" : "116", 
      "weatherDesc" : [ { "value" : "Partly Cloudy" } ], 
      "weatherIconUrl" : [ { "value" : "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png" } ], 
      "winddir16Point" : "N", 
      "winddirDegree" : "350", 
      "windspeedKmph" : "26", 
      "windspeedMiles" : "16" 
      } ], 
     "request" : [ { "query" : "01801", 
      "type" : "Zipcode" 
      } ], 
     "weather" : [ { "date" : "2011-05-09", 
      "precipMM" : "0.0", 
      "tempMaxC" : "19", 
      "tempMaxF" : "65", 
      "tempMinC" : "10", 
      "tempMinF" : "50", 
      "weatherCode" : "113", 
      "weatherDesc" : [ { "value" : "Sunny" } ], 
      "weatherIconUrl" : [ { "value" : "http://www/images/wsymbols01_png_64/wsymbol_0001_sunny.png" } ], 
      "winddir16Point" : "NNW", 
      "winddirDegree" : "348", 
      "winddirection" : "NNW", 
      "windspeedKmph" : "24", 
      "windspeedMiles" : "15" 
      }, 
      { "date" : "2011-05-10", 
      "precipMM" : "0.1", 
      "tempMaxC" : "13", 
      "tempMaxF" : "56", 
      "tempMinC" : "12", 
      "tempMinF" : "53", 
      "weatherCode" : "122", 
      "weatherDesc" : [ { "value" : "Overcast" } ], 
      "weatherIconUrl" : [ { "value" : "http://www/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png" } ], 
      "winddir16Point" : "NNE", 
      "winddirDegree" : "12", 
      "winddirection" : "NNE", 
      "windspeedKmph" : "31", 
      "windspeedMiles" : "19" 
      } 
     ] 
    } } 

所以我回答我的問題: 如果別人想快速獲取價值:這就是我一直在尋找。

JSONObject j = new JSONObject(strResponse); 

String weatherDesc = jObject.getJSONObject("data").getJSONArray("weather").getJSONObject(0).getJSONAr­ray("weatherDesc").getJSONObject(0).getString("value"); 
+2

您還沒有指定您正在使用的語言。查看本頁面的一半,找到您正在使用的解決方案。 http://json.org/ – Gazler 2011-05-09 21:36:03

+1

鑑於OP的發佈歷史,我會對C#進行一次投注。或者你想在JavaScript中做到這一點? – BalusC 2011-05-09 21:37:09

+0

@BalusC:但是再次,他正在.net中編寫Web服務,以及一個關於在an​​droid上使用Web服務的問題... sooooo ... – 2011-05-09 21:38:26

回答

3

幾乎所有的語言都有JSON庫。如果你建議一個,我可能會指出你的東西。

在此期間,這裏有幾個:

等。我建議你選擇一種語言的快速谷歌。

+0

謝謝,對不起,我沒有提到它是Java和Android 1.5。我使用Eclipse作爲IDE。我看了谷歌的Gson和Json,但找不到任何樣本來找到一個節點,並獲得像我在C#數據集或xpath中那樣的值 – snail 2011-05-09 22:11:10

+0

@webservicenewbie最後一個鏈接,即Android之一,應該是您正在查找的文檔。 – 2011-05-09 22:14:25

+0

事實上,Android的JSONObject是微不足道的,OP有沒有看過文檔? – 2011-05-09 22:44:04

1

一般來說,您將使用專門爲您的語言構建的庫,您嘗試讀取數據的語言是什麼?許多語言都有一些可用的庫,有些語言可能已經內置了支持,比如JavaScript。

如果您只是需要了解數據,它是非常可讀的...