2011-05-09 47 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。

如果您只是需要了解数据,它是非常可读的...