Json使用java迭代

时间:2013-07-30 06:37:39

标签: java json getjson

这是我的json对象。

{"id":"mrbbt6f3fa99gld0m6n52osge0",
 "name_value_list":
 {"user_default_dateformat":{"name":"user_default_dateformat","value":"m/d/Y"}},
 "module_name":"Users"}    

我通过以下代码得到了id和module_name。如何获得user_default_dateformat?。

我知道这可能很简单,但我是json的新手。

        String jsonResponse;

        while ((jsonResponse = br.readLine()) != null) {

            jsonOutput = jsonResponse;

        }
        JSONObject job = new JSONObject(jsonOutput);

        System.out.println(job);// i can see the same json object 
                                                that i showen above.
        sessionID = job.get("id").toString();

生成coge的异常

JSONObject job2=new JSONObject(job);
dateFormat = job2.get("user_default_dateformat").toString();

Eexception是

org.json.JSONException: JSONObject["user_default_dateformat"] not found.    

谢谢,

2 个答案:

答案 0 :(得分:4)

name_value_list也是一个Object。

JSONObject job2 = new JSONObject(job.get("name_value_list"));

所以你得到了

job2.get("user_default_dateformat");

JSON中的每个{}都是一个对象。因此,对于您获得的每个String,如{"xy":"za","ab":"cd"},您必须将其强制转换为JSONObject

编辑您的错误:

正如您在代码中看到的那样:

JSONObject job2=new JSONObject(job);

将尝试从JSONObject生成JSONObject。

您必须在 JSONObject中获取JSONObject

您想获取JSONObject中的user_default_dateformat:

String name_value_list_string = job.get("name_value_list").toString();
//this string is another json-string which contains the user_default_dateformat
JSONObject name_value_list_object = new JSONObject(name_value_list_string);

//This JSONObject contains the user_default_dateformat but this is also a JSONObject

String user_default_dateformat_string = name_value_list_object.get("user_default_dateformat").toString();
//this String contains the user_default_dateformat JSONString

JSONObject user_default_dateformat_object = new JSONObject(user_default_dateformat_string);

//This JSONObject contains the String values of your user_default_dateformat

答案 1 :(得分:1)

如果您使用的是JSONSimple库,可以使用它:

jsonObject =(JSONObject)new JSONParser()。parse(jsonstr);       。的System.out.println((的JSONObject)jsonObject.get( “name_value_list”)))获得( “user_default_dateformat”));

这可以为您提供所需的结果。