0

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":""}}}

配列ではなく、複数のオブジェクトです。何か助けてください。

4

4 に答える 4

2

JSONObjectを使用してそれらを取得できます。これは非常に単純な例であり、1つのノードからIDを解析するだけです。

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");
于 2012-08-06T09:39:51.227 に答える
0

AndroidにはネイティブJSONパーサーが含まれています-少量のデータに適しています(パッケージorg.jsonを調べてください)。解析するデータが多い場合は、GSONなどのプルパーサーの方が適しています。

于 2012-08-06T09:33:45.847 に答える
-1

まず、JSON内のすべての変数を使用してクラスを作成する必要があります。このようなもの:

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;
        }
    }
}

次に、データを取得する必要があります。たとえば、次のようなものです。

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; }
                }

お役に立てば幸いです。

于 2012-08-06T09:40:43.390 に答える
-1

org.json.JSONObjectクラスを使用します。

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");
...
于 2012-08-06T09:41:24.407 に答える