Я возвращаю массив 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()' –