0

I have a JSON array that does not have a title.

I keep trying to read the JSON through but it seems to keep failing.
I am hoping there is some kind of example of parsing JSON without calling the array name.

Any help or pointing me in the direction of an example would be greatly appreciated. I will attach the code that I am having errors with below. The two urls are of the data I am attempting to read in.

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
  • 1
    paste an example of the JSON. Commented Jun 11, 2015 at 1:09

1 Answer 1

1

First of all you should have this line in your AndroidManifest.xml

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

2-nd: you have typos in your code for example: test = jsonArr.getJSONObje(str); there is no such method in JsonArray

3-d: you iterate over string for some reason: for (int i = 0; i <= str.length(); i++) {

So here is working demo code that you can upgrade for your needs:

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;
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.