2017-02-06 136 views
1

这是我的JSON字符串,我成功加载了我的java代码[result]。Java Json解析器数组

{"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())?

+0

我有一个问题给你。这个数据可以被一个用户的乘法时间加起来吗?或者只是一次。因为您可以使用此解决方案的地图。对于每次迭代,您将添加用户字符串作为键和日期的值作为值? – Gatusko

回答

0

如何从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对所有感兴趣的领域引用钥匙,后来就让它帮你找回你感兴趣的记录,只需在哈希表中指定的用户名,抱歉有一百万次更新,我一定会讨论这不是你正在寻找的答案

0

你就要成功了,在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); 
+0

你不觉得为'sys_updated_by'不是'user2'的用户访问'opened_at'是不必要的。 –

0

它的发现,当你使用for-each loop,然后检查是否简单是user2opened_at的商店价值是一些字符串和突破厕所。

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