繁体   English   中英

如果 jsonarray 中存在属性值,则获取数组 object

[英]Get array object if attribute value present from jsonarray

如果属性值与 jsonarray 匹配,我想获取 jsonarray 的 object。 下面的代码很好地通过一一检查列表来获取属性值。

JSONParser parser1 = new JSONParser();
JSONArray array = (JSONArray)parser1.parse("[{\"user_id\": 1,\"Name\":\"Andrew\"}, {\"user_i\": 1}, {\"user\": 1}]");

 for (int i =0; i<array.size();i++){
           System.out.println(((JSONObject)array.get(i)).get("Name"));
  }

但是,我想在属性值匹配时获取索引(列表),即{\"user_id\": 1,\"Name\":\"Andrew\"} 就像是

System.out.println(((JSONObject)array.get("Name")).get(i));

谁能建议我如何实现这一目标?

如果我对您的理解正确,您可以使用for循环和if来获取数组中 object 的索引:

int index = -1;
for (int i = 0, len = array.size(); i < len; ++i) {
    String name = (JSONObject)array.get(i)).get("Name");
    if (name.equals("Andrew")) {
        index = i;
        break;
    }
}

可能也有一些等效的流。

或者,如果您想要object ,而不是它的索引:

JSONObject result = null;
for (int i = 0, len = array.size(); i < len; ++i) {
    JSONObject obj = (JSONObject)array.get(i);
    if (obj.get("Name").equals("Andrew")) {
        result = obj;
        break;
    }
}

或使用增强for循环:

JSONObject result = null;
for (Object obj : array) {
    JSONObject jsonObj = (JSONObject)obj;
    if (jsonObj.get("Name").equals("Andrew")) {
        result = jsonObj;
        break;
    }
}

暂无
暂无

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

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