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检索它们。这是一个非常简单的例子,只解析出一个节点的 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;
        }
    }
}

Ant 然后你需要检索数据。例如这样的:

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 回答