• 1000 с помощью OOM, если я попытаюсь.
Поэтому я использую JsonReader
для обработки потока JSON.
Бывают случаи, когда я достигаю BEGIN_OBJECT
, когда я хочу просто выгрузить содержимое объекта в строку вместо обработки каждого отдельного элемента.
Например, я разбираю что-то вроде этого:
[ { "SchemaVersion":"15.0.0.0","LibraryVersion":"16.0.7324.1200","ErrorInfo":{ "ErrorMessage":"Access denied. You do not have permission to perform this action or access this resource.","ErrorValue":null,"TraceCorrelationId":"03ab459e-7076-5000-c1a7-196f1fc54384","ErrorCode":-2147024891,"ErrorTypeName":"System.UnauthorizedAccessException" },"TraceCorrelationId":"03ab459e-7076-5000-c1a7-196f1fc54384" } ]
Когда я добираюсь до ErrorInfo
, я просто хотите, чтобы это была строка, а не разобранная. Я не хочу анализировать каждую часть.
Итак, вот код:
try (InputStream is = (InputStream)response.getEntity();
InputStreamReader inputStreamReader = new InputStreamReader(is);
JsonReader jsonReader = new JsonReader(inputStreamReader)) {
if (jsonReader.peek() != JsonToken.BEGIN_ARRAY) {
return;
}
jsonReader.beginArray();
while (jsonReader.hasNext()) {
jsonReader.beginObject(); // Start of the default object on every request
jsonReader.skipValue(); // name SchemaVersion
jsonReader.skipValue(); // value
jsonReader.skipValue(); // name LibraryVersion
jsonReader.skipValue(); // value
jsonReader.skipValue(); // name ErrorInfo
if (jsonReader.peek() == JsonToken.BEGIN_OBJECT) {
// I want to dump the upcoming object to string here
...
Можно ли выгрузить содержимое читателя json для данного начала объект, пока он не закончится строкой?
Аналогичный вопрос, но не совсем тот же: Получить дамп раздела (объекта) JSON