9

I have an app where I fetch data from server(json) in the form of array & by using the index i used in my app, like below.

JSONObject topobj = new JSONObject(page);
JSONObject innerobj = topobj.getJSONObject("restarutant");
JSONArray phone = innerobj.getJSONArray("phone");
textViewPhone.setText("Phone: " + phone.get(0).toString() + " ,"
                    + phone.get(1).toString());

for small size array I can get like this. But when array contains 'n' no of elements and dynamically i have to use this, at that time it required to convert into String Array. Can anybody tell me how I convert the json array to String array ? Thank you

3
  • 1
    you should accept correct answers to your questions if you've found them to be useful(See there is a tick there)and also use upvotes. It will help you get more answers. Commented Jun 15, 2011 at 11:41
  • possible duplicate of Convert Json Array to normal Java Array Commented Jun 5, 2013 at 11:36
  • ArrayList is not a String[] , title wont fulfill your explanation of question AND the accepted answer it for ArrayList , NOT String[] ; Commented Apr 3, 2015 at 22:22

6 Answers 6

22

This should help you.

Edit:

Maybe this is what you need:

ArrayList<String> stringArray = new ArrayList<String>();
JSONArray jsonArray = new JSONArray();
for(int i = 0, count = jsonArray.length(); i< count; i++)
{
    try {
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        stringArray.add(jsonObject.toString());
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
}
Sign up to request clarification or add additional context in comments.

2 Comments

Hiii,my question is different. Its for coverting objecty to string then string to json array. But I asked to convert json array to string array
The title is about String[] , but the accepted answer gives a ArrayList<String> , Which are totally different however
6

Assume that you already have JSONArray jsonArray:

String[] stringArray = new stringArray[jsonArray.length()];
for(int i = 0, count = jsonArray.length(); i< count; i++)
{
    try {
        String jsonString = jsonArray.getString(i);
        stringArray[i] = jsonString.toString();
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
}

1 Comment

new stringArray[jsonArray.length()]; --- should be ---> new String[jsonArray.length()];
5

This I think is what you searching for

ArrayList<String> list = new ArrayList<String>();     
JSONArray jsonArray = (JSONArray)jsonObject; 
if (jsonArray != null) { 
   for (int i=0;i<jsonArray.length();i++){ 
    list.add(jsonArray.get(i).toString()); 
} 

Comments

3

I just did this yesterday! If you're willing to use a 3rd party library then you can use Google GSON, with the additional benefit of having more concise code.

String json = jsonArray.toString();
Type collectionType = new TypeToken<Collection<String>>(){}.getType();
Collection<String> strings = gson.fromJson(json, collectionType);

for (String element : strings)
{
    Log.d("TAG", "I'm doing stuff with: " + element);
}

You can find more examples in the user guide.

Comments

0

Another elegant kotlin way:

val list = jsonArray.map { jsonElement -> jsonElement.toString() }

And just convert to array if needed

Comments

0

If you are using org.json package, Here is the kotlin way of converting json array to string array.

// get json array
val jsonArray = json.getJSONArray("field")
// convert to string array
val stringArray = Array(jsonArray.length()) { jsonArray.getString(it) }

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.