14

I am trying to get a list of available numbers from the following json object, using the class from org.json

    {
        "response":true,
        "state":1,
        "data":
        {
            "CALLERID":"81101099",
            "numbers":
                [
                       "21344111","21772917",
                       "28511113","29274472",
                       "29843999","29845591",
                       "30870001","30870089",
                       "30870090","30870091"
                ]
        }
    }

My first steps were, after receiving the json object from the web service:

jsonObj = new JSONObject(response);
jsonData = jsonObj.optJSONObject("data");

Now, how do I save the string array of numbers?

4 Answers 4

43

use:

jsonObj = new JSONObject(response);
jsonData = jsonObj.optJSONObject("data");
JSONArray arrJson = jsonData.getJSONArray("numbers");
String[] arr = new String[arrJson.length()];
for(int i = 0; i < arrJson.length(); i++)
    arr[i] = arrJson.getString(i);
Sign up to request clarification or add additional context in comments.

3 Comments

Except for the fact that there's no method in JSONArray named getLength(did you mean length() ? ) this was great - thanks :)
If you're specifying strings, it looks like you have to cast the value of arrJson.get(i) to String.
It shows null pointer exception. getString(i) retrieves the value in the form of string. But in OP's case the JSONArray's elements do not have value.
3

you need to use JSONArray to pull data in an array

JSONObject jObj= new JSONObject(your_json_response);
JSONArray array = jObj.getJSONArray("data");

Comments

1

My code is for getting "data":

public void jsonParserArray(String json) {

        String [] resultsNumbers = new String[100];

        try {
            JSONObject jsonObjectGetData = new JSONObject(json);
            JSONObject jsonObjectGetNumbers = jsonObjectGetData.optJSONObject("results");
            JSONArray jsonArray = jsonObjectGetNumbers.getJSONArray("numbers");
            for (int i = 0; i < jsonArray.length(); i++) {
                resultsNumbers[i] = jsonArray.getString(i);
            }
        } catch (JSONException e) {
            e.printStackTrace();
            Log.e(LOG_TAG, e.toString());
        }
    }

Comments

0

Assuming that you are trying to get it in a javascript block, Try something like this

var arrNumber = jsonData.numbers;

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.