如何将属性 JSON 对象值与使用 Android 或 Java 相匹配?

How to match attributes JSON object values to using Android or Java?

我正在创建一个示例,使用概念 JSONArray 解析来获取特定值以匹配属性。

例如:

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" 以在查询和位置值中列出并显示它。

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();
        }
    }
}

不显示空值。

示例数据错误。

你少了一个逗号

改变

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

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

首先,它不是一个有效的 JSON,要使其有效,请添加 逗号 ( ,) 在第 3 行像这里

"locations": [94043,90210],

那么只有你可以这样检查

json = array.getJSONObject(i);

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

记住:不是json.get,是json.getString