2016-03-04 19 views
0

我正在創建一個使用概念JSONArray解析來獲取特定值以匹配屬性的示例。如何將屬性JSON對象值匹配爲使用Android或Java?

例如:

sample_struct.json文件數據

[ { 
"query": "Pizza", 
"locations": [94043,90210] 
"mDK": "kk" 

     }, { 
"query": "Pizza", 
"locations": [94043,90210] 
     }, { 
"query": "akkk", 
"locations": [94043,90210] 
     }, { 
"query": "Pizza", 
"locations": [94043,90210], 
"mDK": "kk" 
     }, { 
"query": "Pizza", 
"locations": [94043,90210],"mDK": "ff" 
     }, { 
"query": "Pigg", 
"locations": [94043,90210],"mDK": "kk" 
     }, { 
"query": "Pgg", 
"locations": [94043,90210],"mDK": "ff" }, { 
"query": "Pgg", 
"locations": [94043,90210],"mDK": "ff" }, { 
"query": "Pgg", 
"locations": [94043,90210],"mDK": "ff" }, { 
"query": "Pgg", 
"locations": [94043,90210],"mDK": "kk" }] 

我需要的是讓「MDK」裏的字符串「KK」來查詢和位置值內listout也顯示它。

String mmm = "kk"; 

JSONArray jsonArray=getJSonData("sample_struct.json"); 
parseData(jsonArray); 

private void parseData(JSONArray array) { 
    for(int i = 0; i < array.length(); i++) { 
     Mo mo = new Mo(); 
     JSONObject json = null; 

     try { 
      json = array.getJSONObject(i); 

      if(json.get("mDK").equals(mm)) { 

       mo.setquery(json.getString("query")); 
       mo.setlocations(json.getString("locations)); 
       mo.setmDK(json.getString("mDk")); 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

不顯示空值。

+0

我sample_struct.json文件還沒有一個有效的JSON數據。點擊這裏http://jsonviewer.stack.hu/從文件中複製粘貼文本.. –

+0

你現在得到的結果是什麼,它與你打算實現的有什麼不同? – aribeiro

回答

0

首先,爲了使有效加載逗號)在第3行像這裏

"locations": [94043,90210], 

那麼只有你可以檢查這樣

json = array.getJSONObject(i); 

if(json.getString("mDK").equals(mm)){ 
    //Your logic 
} 

記住:這不是json.get,這是json.getString

0

樣本數據錯誤。所有它不是一個有效的JSON

你缺少一個逗號

changr

 [ { 
"query": "Pizza", 
"locations": [94043,90210] 
"mDK": "kk" 

 [ { 
"query": "Pizza", 
"locations": [94043,90210], 
"mDK": "kk" 
相關問題