Yo que el análisis de los datos de un archivo json. Aquí está mi Archivo JSON.

[
     {

       "topic": "Example1", 
       "contact": [
            {
                "ref": [
                    1
                ], 
                "corresponding": true, 
                "name": "XYZ"
            }, 
            {
                "ref": [
                    1
                ], 
                "name": "ZXY"
            }, 
            {
                "ref": [
                    1
                ], 
                "name": "ABC"
            }, 
            {
                "ref": [
                    1, 
                    2
                ], 
                "name":"BCA"
            }
        ] , 

        "type": "Presentation"
     }, 
    {

       "topic": "Example2", 
       "contact": [
            {
                "ref": [
                    1
                ], 
                "corresponding": true, 
                "name": "XYZ"
            }, 
            {
                "ref": [
                    1
                ], 
                "name": "ZXY"
            }, 
            {
                "ref": [
                    1
                ], 
                "name": "ABC"
            }, 
            {
                "ref": [
                    1, 
                    2
                ], 
                "name":"BCA"
            }
        ] , 

        "type": "Poster"
     }
]

Puedo obtener y almacenar los datos uno por uno. Como este

JSONArray getContactsArray = new JSONArray(jsonObject.getString("contact"));
for(int a =0 ; a < getContactsArray.length(); a++)
{
    JSONObject getJSonObj = (JSONObject)getContactsArray.get(a);
    String Name = getJSonObj.getString("name");
} 

1)Ahora, mi pregunta es hay alguna forma de que todos name valores para cada matriz con una sola consulta.
2) ¿puedo obtener todos los valores en un Array ?

Por favor me corrigen si estoy haciendo algo mal. Gracias.

InformationsquelleAutor user2579475 | 2013-07-16

3 Comentarios

  1. 2

    Iteración no puede ser evitado aquí como org.json y otros Json analizadores así proporcionar un acceso aleatorio a los objetos, pero no a sus propiedades colectivamente (como una colección). Así, usted no puede consultar algo como «todas las propiedades de nombre de todos los objetos de contacto» a menos que, probablemente, obtener un Json parser como Gson a unmarshall de esa manera.

    Pero, eso es demasiado para evitar un for bucle cuando definitivamente se puede acortar el análisis haciendo uso apropiado de los métodos de la API de evitar innecesarias objeto de moldes.

    JSONArray contacts = jsonObject.getJSONArray("contact");
    String[] contactNames = new String[contacts.length()];
    for(int i = 0 ; i < contactNames.length; i++) {
        contactNames[i] = contacts.getJSONObject(i).getString("name");
    } 
  2. 0

    Mejor usar un json parser como GSon o Jackson a marshall a su json a un objeto java. A continuación, puede escribir utitlity método en la clase de java para recuperar todos los nombres de ese objeto.

  3. 0

    Intente esto:

    Crear JSONObject de su archivo y tratar de obtener el conjunto de todos los nombres e iterar para obtener todos los valores.

    public static String[] getNames(JSONObject jo) {
    
            int length = jo.length();
            if (length == 0) {
                return null;
            }
            Iterator i = jo.keys();
            String[] names = new String[length];
            int j = 0;
            while (i.hasNext()) {
                names[j] = (String) i.next();
                j += 1;
            }       
            return names;
        }

Dejar respuesta

Please enter your comment!
Please enter your name here