我返回一個包含許多對象的JSON數組,我期望能夠搜索每個對象中的屬性,然後返回滿足此條件的對象標準。Java JSON/GSON - 搜索數組中的所有對象並返回匹配
我能夠返回JSON數組,但我在如何搜索對象以將屬性值與給定值匹配時遇到問題。
從陣列中的一些示例值:
[
{"blobJson":"x","deviceMfg":10,"eventCode":0,"sensorClass":3,"sensorUUID":"136199","timeStamp":1.48338464E9,"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"}
]
我用下面的代碼返回數組,預期其工作原理:
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonArray rootArr = root.getAsJsonArray();
下面的代碼塊就是我用於搜索給定屬性值的對象時,此代碼僅在返回對象時起作用,但在返回整個數組時返回錯誤:
JsonObject rootObj = rootArr.getAsJsonObject();
for (String attribute : attributes) {
System.out.println(rootObj.get(attribute).getAsString());
}
這是給錯誤:
java.lang.IllegalStateException: Not a JSON Object:
我試圖改變rootObj.get(attribute)
到rootArr.get(attribute)
但返回錯誤:
incompatible types: java.lang.String cannot be converted to int
這是方法調用:
method("136199", Arrays.asList("blobJson", "deviceMfg", "uID"));
方法聲明:
void method(String sensor, List<String> attributes)
這回從表中的一個條目,也許我應該更清楚。我希望能夠搜索屬性(例如「sensorClass = 3」)並返回符合該條件的所有對象。 – Colin747
如果我遞增'.get(0)'值,這會返回每個對象嗎? – Colin747
確切地說,你甚至可以使用'root.getAsJsonArray()。size()' –