2013-06-03 42 views
0

我在訪問另一個對象內部的JSON數組節點時遇到了問題。訪問對象內部的JSON數組節點

我想基本上都看過JSON文件看起來是這樣的:

[ 
{ 
    "dependencies": [ "data" 
    ] 
} 
] 

我得在那裏我無法用我的代碼來訪問標籤,我已經點不知道如何。

我使用JSON庫從http://www.json.org/java/

,我已經在這個例子中使用的完整的代碼是在這裏:

List depList; 

    InputStream is = new URL(url).openStream(); 

    BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
    JdomParser jp = new JdomParser(); 
    JsonRootNode js = jp.parse(rd); 

    if(js.getArrayNode(0).get(0).getArrayNode("dependencies").size() > 0){ 
     depList = js.getArrayNode(0).get(0).getArrayNode("dependencies"); 
     is.close(); 
     return depList; 
    } else { 
     return null; 
    } 

,我使用的具體線路是這樣的一種: js.getArrayNode(0).get(0).getArrayNode("dependencies")

+0

我修改了原來現在 – JamEngulfer

回答

0

這裏有一些示例代碼應該可以幫到你。這會打印出「數據」。

package com.sandbox; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class Sandbox { 
    public static void main(String[] args) throws JSONException { 
     String input = "[\n" + 
       "{\n" + 
       " \"dependencies\": [ \"data\"\n" + 
       " ]\n" + 
       "}\n" + 
       "]"; 

     JSONArray start = new JSONArray(input); 
     JSONObject jsonObject = start.getJSONObject(0); 
     JSONArray dependencies = jsonObject.getJSONArray("dependencies"); 
     String data = dependencies.getString(0); 
     System.out.println(data); 
    } 

} 

這裏是我的Maven的依賴:

<dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20090211</version> 
    </dependency> 
+0

我下載從'BufferedReader' JSON數據,並使用'的toString()試過'方法在reader變量上,然後用它作爲'input'變量。當我嘗試這樣做時,我得到一個錯誤,指出'JSONArray文本必須以'['開始,位於1 [character 2 line 1]'我做錯了什麼? – JamEngulfer

+0

我認爲你的問題是你不應該在'BufferedReader'上使用'toString'。打印出'toString'的結果並讓我知道它們是什麼。這應該可以幫助你解決你的問題:http://stackoverflow.com/questions/15040504/how-to-converting-bufferedreader-to-string-at-once –

+0

我想這會是我的問題。輸出是'java.io.BufferedReader @ 5be7ef2c' – JamEngulfer

1
JSONArray outArray = new JSONArray(json); 
JSONObject outObject = outArray.getJSONObject(0); 
JSONArray inArray = outObject.getJSONArray("dependencies"); 
String data = inArray.getString(0);