繁体   English   中英

Java Json Parser数组

[英]Java Json Parser array

这是我的JSON字符串我成功加载了我的java代码[result]。

{"result":[
{
"opened_at":"2017-02-06 10:48:55",
"sys_updated_by":"user",
"state":"6"
},
{
"opened_at":"2017-02-06 12:20:43",
"sys_updated_by":"user2",
"state":"1"
},
{
"opened_at":"2017-02-06 15:32:34",
"sys_updated_by":"user3",
"state":"1"
}
]
}

这是我将JSON数据保存在JSONArray中的部分。

JSONArray arr = obj.getJSONArray("result");
        for (int i = 0; i < arr.length(); i++) {
            String opened_at = arr.getJSONObject(i).getString("opened_at");
            String sys_updated_by = arr.getJSONObject(i).getString("sys_updated_by");
            String state = arr.getJSONObject(i).getString("state");

        }

如何从控制台中的user2打印例如opens_at(使用System.out.println())?

你是几乎没有,在for循环,你只需要检查的价值sys_updated_by并获得相应价值opened_at

JSONArray arr = obj.getJSONArray("result");
String opened = null;
for (int i = 0; i < arr.length(); i++) {
    String sys_updated_by = arr.getJSONObject(i).getString("sys_updated_by");
    if("user2".equals(sys_updated_by)){
        opened = arr.getJSONObject(i).getString("opened_at");
        break; //No need to iterate anymore
    }
}
System.out.println(opened);

当你使用for-each loop时它非常简单,然后检查它是否是opened_at user2存储值是一些String并且突破了loo。

 String openedAt = "";
 for(JOSNObject object : arr){
       if(object.getString("sys_updated_by").equals("user2")){
             openedAt = object.getString("opened_at");
             break;
       }
 }
 System.out.println(openedAt);

如何从user2访问例如opened_at?

java.util.Map<String , Object> myMap = new java.util.HashMap<>();

for (int i = 0; i < arr.length(); i++) {
        String opened_at = arr.getJSONObject(i).getString("opened_at");
        String sys_updated_by = arr.getJSONObject(i).getString("sys_updated_by");
        String state = arr.getJSONObject(i).getString("state");

        // your CATCH
        myMap.put( sys_updated_by , arr.getJSONObject(i) ); 
    }

// IF YOUR ARE HARDCODING ACCESS
try
{
     System.out.println( ( (JSONObject)myMap.get("user") ).getString("opened_at") + ((JSONObject)myMap.get("user2")).getString("opened_at") );
}
catch(Exception any){}

让sys_update_by键值,成为所有感兴趣字段的JSONObject引用的键,然后让它帮助您检索您感兴趣的记录,只需在哈希映射中指定用户名,对不起一百万次更新,我肯定会想讨论这不是你想要的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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