简体   繁体   中英

Parsing JSON file in android

how to parse something like this in JSON ?

{"nodes":
   {"0":
       {"node":{"id":"13970","name_ar":"\u0623\u062f\u0647\u0645","name_en":"Adham","bio_ar":""}},
    "1":
       {"node":{"id":"14033","name_ar":"aa","name_en":"Ahmed Shaalan","bio_ar":""}}}

Its not an array its more than one object, any help please ?

You can retrieve them using JSONObject . This is a very simple example, and only parses the id out of one node:

JSONObject object = new JSONObject(myJsonString);     
JSONObject nodes = object.getJSONObject("nodes");
JSONObject zero = nodes.getJSONObject("0");
JSONObject myNode = zero.getJSONObject("node");
String id myNode = myNode.getString("id");

Android contains native JSON parser - it is good for small amount of data (look into package org.json ) . If you have more data to parse, some pull parser like GSON will be better.

You need to create first a class with all the variables inside the JSON. Something like this:

import java.util.HashMap;

public class NodesClass { // Create a new class called NodesClass

    public Nodes nodes; // Create a new public class 

    public class Nodes { 

        public HashMap<String, InnerObject> nodes;
    }

    public class InnerObject {

        public Node node;

        public class Node {

            public int id;
            public String name_ar, name_en, bio_ar;
        }
    }
}

Ant then you need to retrieve the data. Eg something like this:

NodesClass ndes = new Gson().fromJson(stringNodes, NodesClass.class);

                int[] id = new int[11];

                for (int numNodes = 0; numNodes < maxNumNodes; numNodes++)
                {
                    try {

                        id[numNodes] = ndes.nodes.get(String.valueOf(numNodes)).node.id;

                    } catch (NullPointerException n) { break; }
                }

I hope it help you.

Use org.json.JSONObject class:

jObject = new JSONObject(jString); 
JSONObject nodesObject = jObject.getJSONObject("nodes");

ArrayList<JSONObject> objects = new ArrayList<JSONObject>();
for( int i=0; i<10; i++)
{
    objects.add(nodesObject.getJSONObject(""+i);
}

String name = objects.get(0).getJSONObject("node").getString("name_ar");
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM