Проблема с пустыми полями итератора при разборе JSON - PullRequest
0 голосов
/ 05 марта 2019

У меня есть JSON: [{"client":"1"}]

JSON передается извне, и мне нужно пойти и разобрать, что JSON, JSON может измениться, поэтому мне приходится читать его каждый раз.

Чтение в режиме онлайн. Я бросил книжную полку Jackson, но у меня возникла проблема с выводом .. fieldsIterator результат пуст:

JsonFactory factory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper(factory);
JsonNode rootNode = mapper.readTree(params);

Iterator < Map.Entry < String, JsonNode >> fieldsIterator = rootNode.fields();

while (fieldsIterator.hasNext()) {
 Map.Entry < String, JsonNode > field = fieldsIterator.next();
 System.out.println("Key: " + field.getKey() + "\tValue:" + field.getValue());
}

На данный момент ничего не печатается. Как это исправить?

1 Ответ

0 голосов
/ 05 марта 2019

Ваш корневой элемент - array, а для array метод fields возвращает empty iterator. Используйте elements:

ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree("[{\"client\":\"1\"}]");

Iterator<JsonNode> fieldsIterator = rootNode.elements();

while (fieldsIterator.hasNext())
{
    JsonNode field = fieldsIterator.next();
    Iterator<String> elements = field.fieldNames();
    while (elements.hasNext()) {
        String fieldName = elements.next();
        System.out.println("Key: " + fieldName + "\tValue:" + field.get(fieldName).asText());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...