2015-06-11 64 views
0

我有一个没有标题的JSON数组。json阅读问题数组无标题

我一直试图阅读JSON,但它似乎保持失败。
我希望有一种不调用数组名称来解析JSON的例子。

任何帮助或指示我的方向的例子将不胜感激。我将在下面附上我有错误的代码。两个URL是我试图在读取数据的

https://www.descartes.com/rest/glossary-items
https://www.descartes.com/rest/glossary-sources

JsonParser:

public class JsonParser { 

    static InputStream is = null; 
    static JSONArray jarray = null; 
    static String json = ""; 

    public JSONArray getJSONFromUrl(String url1) { 

     StringBuilder builder = new StringBuilder(); 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(url1); 
     try { 
      HttpResponse response = client.execute(httpGet); 
      StatusLine statusLine = response.getStatusLine(); 
      int statusCode = statusLine.getStatusCode(); 
      if (statusCode == 200) { 
       HttpEntity entity = response.getEntity(); 
       InputStream content = entity.getContent(); 
       BufferedReader reader = new BufferedReader(
         new InputStreamReader(content)); 
       String line; 
       while ((line = reader.readLine()) != null) { 
        builder.append(line); 
       } 
      } else { 
       Log.e("==>", "Failed to download file"); 
      } 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     // try parse the string to a JSON object 
     try { 
      jarray = new JSONArray(builder.toString()); 
      // System.out.println(""+jarray); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON String 
     return jarray; 

    } 
} 

doInBackground:

protected Void doInBackground(Void... arg0) { 
    String str = ""; 
    JsonParser sh = new JsonParser(); 

    // Making a request to url and getting response 
    String jsonStr = sh.getJSONFromUrl(url1, JsonParser.GET); 

    if (jsonStr != null){ 
     try{ 
      JSONArray jsonArr = new JSONArray(jsonArr); 
      test = jsonArr.getJSONObje(str); 
      // looping through All Contacts 
      for (int i = 0; i <= str.length(); i++) { 

       JSONObject c = str.getJSONObject(i); 

       String tid = c.getString(TAG_TID); 
       String title = c.getString(TAG_TITLE); 
       String acronym = c.getString(TAG_ACRONYM); 
       String description = c.getString(TAG_DESCRIPTION); 


       // tmp hashmap for single contact 
       HashMap<String, String> contact = new HashMap<String, String>(); 

       // adding each child node to HashMap key => value 
       contact.put(TAG_TID, tid); 
       contact.put(TAG_TITLE, title); 
       contact.put(TAG_ACRONYM, acronym); 
       contact.put(TAG_DESCRIPTION, description); 

       // adding contact to contact list 
       glossaryList.add(contact); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } else { 
     Log.e("JsonParser", "Couldn't get any data from the url"); 
    } 
    return null; 
} 
+1

粘贴JSON的例子。 – Ali

回答

1

第一所有哟ü应该有这条​​线在你AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

2-ND:你在你的代码拼写错误,例如:test = jsonArr.getJSONObje(str);存在JsonArray没有这样的方法

3-d:你遍历字符串一些原因:for (int i = 0; i <= str.length(); i++) {

所以在这里工作的演示代码,您可以为您的需求升级:

public JSONArray getJSONFromUrl(String url1) { 

    String responseBody = ""; 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet(url1); 
    try { 
     responseBody = client.execute(httpGet, new BasicResponseHandler()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     JSONArray jarray = new JSONArray(responseBody); 
     return jarray; 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    return null; 

} 

protected Void doInBackground(Void... arg0) { 
    JsonParser sh = new JsonParser(); 
    JSONArray jsonArr = sh.getJSONFromUrl("https://www.descartes.com/rest/glossary-items"); 

    // looping through All Contacts 
    if (jsonArr!= null) { 
     for (int i = 0; i < jsonArr.length(); i++) { 
      JSONObject contact = jsonArr.optJSONObject(i); 
      if (contact!= null) 
       Log.e("jsonArr " + i + ":", contact.toString()); 
     } 
    } 
    return null; 
}