4

EDIT: I actually found the answer. I can't close the question as I am new. I was able to use Array.getString(i) to return the string value needed. Thanks for all the help.

I have JSON like this:

{
  "List": [
    "example1",
    "example2",
    "example3",
    "example4"
  ]
}

And I am trying to get the string value of those objects without using a key. How can I do that? The getString() for jsonObject require a key and I don't have one.

Ammar
  • 1,068
  • 2
  • 13
  • 20

3 Answers3

7

I assume that you have a file :/home/user/file_001.json

the file contains this : `

{"age":34,"name":"myName","messages":["msg 1","msg 2","msg 3"]}

Now let's write a program that reads the file : /home/user/file_001.json and converts its content to a java JSONObject.

package org.xml.json;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;


    public class JsonSimpleRead
    {
        @SuppressWarnings("unchecked")
        public static void main(String[] args)
        {
            JSONParser parser = new JSONParser();
            try
            {
                Object obj = parser.parse(new FileReader("/home/user/file_001.json"));
                JSONObject jsonObject = (JSONObject) obj;
                String name = (String) jsonObject.get("name");
                System.out.println(name);

                long age = (Long) jsonObject.get("age");
                System.out.println(age);

                JSONArray msg = (JSONArray) jsonObject.get("messages");
                Iterator<String> iterator = msg.iterator();
                while (iterator.hasNext())
                {
                    System.out.println(iterator.next());
                }
            }
            catch (FileNotFoundException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            catch (ParseException e)
            {
                e.printStackTrace();
            }
        }
    }
Djahid Bekka
  • 516
  • 4
  • 3
0

Another solution:

import org.json.JSONArray;
import org.json.JSONObject;

// example json
String list = "{\"List\": [\"example1\", \"example2\", \"example3\", \"example4\"]}";

// to parse the keys & values of our list, we must turn our list into 
// a json object.
JSONObject jsonObj = new JSONObject(list);

// isolate our list values by our key name (List)
String listValues = jsonObj.getString("List");

// turn our string of list values into a json array (to be parsed)
JSONArray listItems = new JSONArray(listValues);

// now we can print individual values using the getString and 
// the index of the desired value (zero indexed)
Log.d("TAG", listItems.getString(2));
JR Chew
  • 38
  • 7
0

"List" is your key because that is the property of the outermost JSON object:

JSONObject json = new JSONObject( jsonString );
JSONArray array = json.getArray( "List" );
chubbsondubs
  • 37,646
  • 24
  • 106
  • 138
  • I can get to the Array just fine. The problem is when I get the Array and have to print the array.getJSONObject(i);. How can I do that without using a key? Normally I would be able to do it by using jsonObject.getString("KEY") but I don't have one here. – Ammar Dec 15 '11 at 04:26
  • What "Key" are you referring to if it's not "List"? You question barely made sense, but if you are saying that you aren't asking about using "List" then what are you talking about? – chubbsondubs Dec 15 '11 at 05:02
  • I actually found the answer. A simple getString(int i) would do it. – Ammar Dec 15 '11 at 05:15
  • So you were asking how to iterate over the array. Seriously? Whatever. – chubbsondubs Dec 15 '11 at 19:07