2011-08-13 81 views
1

我有以下的JSON文本中的Java解析:JSON解析沒有找到項目

{ 
    "items": [ 
     { 
      "key": "D033222DF44E5308482578EB0017588A", 
      "Date": "Aug 13 2011", 
      "Time": "04:54:46 PM", 
      "Company": "CHINA ESSENCE GROUP LTD.", 
      "AnnTitle": "FIRST QUARTER RESULTS * FINANCIAL STATEMENT AND RELATED ANNOUNCEMENT", 
      "Siblings": "18", 
      "SNo": 18 
     }, 
     { 
      "key": "C9906046C7F0E232482578EB0030C437", 
      "Date": "Aug 13 2011", 
      "Time": "04:52:12 PM", 
      "Company": "DESIGjsonN STUDIO FURNITURE MFRLTD", 
      "AnnTitle": "NOTICE OF BOOK CLOSURE DATE FOR DIVIDEND", 
      "Siblings": "18", 
      "SNo": 17 
     } 
    ] 
} 

下面是我的JSONParser類:

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

public class JSONParser { 

private String input = null; 

public JSONParser() { 
} 

public JSONParser(String input) { 
    setInput(input); 
} 

public JSONArray parse() throws JSONException { 
    JSONObject obj = new JSONObject(); 
    return obj.getJSONArray("items"); 
} 

/** 
* @return the input 
*/ 
public String getInput() { 
    return input; 
} 

/** 
* @param input the input to set 
*/ 
public void setInput(String input) { 
    this.input = input; 
} 
} 

我的main()方法類包含這些代碼執行解析器解析 「jsonStr」 對象:

 JSONParser parser = new JSONParser(jsonStr); 
     JSONArray array = parser.parse(); 
     for (int i = 0; i < array.length(); i++) { 
      Object obj = array.get(i); 
      System.out.println(">> " + obj.toString() + "\n"); 
     } 

我的輸出顯示:

SEVERE: null 
org.json.JSONException: JSONObject["items"] not found. 

我使用json.org爲JSON提供的Java代碼。

我應該如何解析上面的字符串?

謝謝。

回答

4

您實際上沒有將輸入字符串傳遞給JSON解析庫。 JSONParser#parse()方法需要(以某種方式)使用this.input。試試這個:

public JSONArray parse() throws JSONException 
{ 
    JSONObject obj = new JSONObject(this.input); 
    return obj.getJSONArray("items"); 
} 

也就是說,org.json.JSONObject是一種古老的實現。我強烈鼓勵您使用更現代化的JSON庫,如下列之一:

+0

非常感謝:d。 – thotheolh