2016-02-20 39 views
0

获取JSON我有这样的JSON字符串:无法从字符串

{ 
    "Data": [ 
    { 
     "id": "1", 
     "type": "formal", 
     "price": "999" 
    }, 
    { 
     "id": "2", 
     "type": "sports", 
     "price": "799" 
    } 
    ] 
} 

Java代码

try { 
    JSONObject parentObject = new JSONObject(result); 
    dataArray = parentObject.getJSONArray(TAG_ARRAY); 
    int i=0; 
    for(i=0;i < dataArray.length();i++) { 
     JSONObject finalObject = dataArray.getJSONObject(i); 
     price[i] = String.valueOf(finalObject.getInt(TAG_PRICE)); 
     type[i] = finalObject.getString(TAG_TYPE); 
    } 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

我不能似乎能够得到的数据,是有什么错吗?

+1

你得到了什么错误?同时发布完整的代码(TAG_ARRAY,TAG_PRICE,TAG_TYPE ...值)。 – Rami

+0

java.lang.NullPointerException –

+0

请发布您的logcat和完整的代码。 – Rami

回答

0

使用此代码。在这里,我使用了json-simple作为JSON库。

JSONParser parser = new JSONParser(); 

    try { 
     JSONObject jsonObject = (JSONObject) parser.parse(new FileReader("C:\\sample.json")); 

     String result = jsonObject.toString(); 
     System.out.println(result); 

     JSONObject resJsonObject = (JSONObject) parser.parse(result); 

     JSONArray jsonArray = (JSONArray) jsonObject.get("Data"); 


     for(int i =0; i<jsonArray.size(); i++){ 
      JSONObject childJson = (JSONObject) jsonArray.get(i); 
      price[i] = (String) childJson.get("price"); 
      type[i] = (String) childJson.get("type"); 
     } 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 


    System.out.println(Arrays.toString(price)); 
    System.out.println(Arrays.toString(type)); 
0

使用

 try { 
      JSONObject parentObject = new JSONObject(result); 

      dataArray = parentObject.optJSONArray("Data"); 
      int i=0; 
      for(i=0;i < dataArray.length();i++) { 
       JSONObject finalObject = dataArray.getJSONObject(i); 
       price[i] = String.valueOf(finalObject.getInt(TAG_PRICE)); 
       type[i] = finalObject.getString(TAG_TYPE); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

如果interract很多使用JSON,可以考虑使用gson或其他专门的JSON序列化图书馆