【问题标题】:Json Iterating using java使用java进行Json迭代
【发布时间】:2013-07-30 04:17:27
【问题描述】:

这是我的 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();

例外是

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

谢谢,

【问题讨论】:

    标签: java json getjson


    【解决方案1】:

    name_value_list 也是一个对象。

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

    所以你得到了

    job2.get("user_default_dateformat");
    

    JSON 中的每个 {} 都是一个对象。因此,对于您获得的每个字符串,例如 {"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
    

    【讨论】:

    • 谢谢 Loki..但我得到了相同的 execption..org.json.JSONException: JSONObject["user_number_seperator"] not found.
    • 你能发布你的代码吗?也许我可以看到你的问题是什么。只需编辑您的问题并添加您的代码。
    • “user_number_seperator”从何而来?您是否尝试获取不在 JSON 对象中的 JSON 属性?
    • 那么你的问题在哪里?堆栈跟踪说什么?在哪一行发生了什么错误?
    • 我得到了 id 没有任何问题..但是在尝试 user_currency_name 时,我得到了这个 execption:org.json.JSONException: JSONObject["user_default_dateformat"] not found.
    【解决方案2】:

    如果你使用 JSONSimple 库,你可以使用这个:

    jsonObject = (JSONObject) new JSONParser().parse(jsonstr); System.out.println((JSONObject)jsonObject.get("name_value_list"))).get("user_default_dateformat"));

    这应该会给你所需的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-27
      • 2016-12-29
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      相关资源
      最近更新 更多