2011-08-13 34 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