2017-02-06 188 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);