java GSON/JSON如果两个属性值匹配返回对象
我希望搜索一个JSON对象数组,如果两个属性与输入的值匹配,那么我希望返回该对象。目前,如果一个属性或另一个属性匹配,我的代码将返回,而我只希望在两者匹配时返回对象
我的方法是:
ArrayList<JsonObject> searchAttributes(String sensor, List<String> attributes, List<String> values) throws IOException {
establishPastEventConnection(sensor);
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonArray rootArr = root.getAsJsonArray();
JsonObject rootObj;
ArrayList<JsonObject> results = new ArrayList<>();
for (int x = 0; x < root.getAsJsonArray().size(); x++) {
rootObj = rootArr.get(x).getAsJsonObject();
for (String attribute : attributes) {
for (String value : values) {
if (rootObj.get(attribute).getAsString().equals(value)) {
results.add(rootObj);
}
}
}
}
return results;
}
方法调用:
nexaConnect.searchAttributes("13619978", Arrays.asList("timeStamp", "eventCode"), Arrays.asList("1.483384638619905E9", "1"))
JSON示例:
[
{"blobJson":"x","deviceMfg":10,"eventCode":0,"sensorClass":3,"sensorUUID":"136199","timeStamp":1.483384640123117E9,"uID":"136199_3_10"},
{"blobJson":"x","deviceMfg":10,"eventCode":0,"sensorClass":3,"sensorUUID":"136199","timeStamp":1.483379834470379E9,"uID":"136199_3_10"},
{"blobJson":"x","deviceMfg":10,"eventCode":0,"sensorClass":3,"sensorUUID":"136199","timeStamp":1.483384639621985E9,"uID":"136199_3_10"}
]
# 1 楼答案
我假设属性列表和值列表的大小相同:
# 2 楼答案
只有当两个属性都与给定的输入值匹配时,才会添加对象。 最后返回ArrayList对象
results