Как проанализировать большой вложенный файл JSON с Джексоном?

Я очень доволен:

foreach (Foo f in foos)
  foreach (Bar b in bars)
    if (f.Equals(b))
      return true;

return false;

Лично я не понимаю, почему

foreach (Foo f in foos)
{
  foreach (Bar b in bars)
  {
    if (f.Equals(b))
    {
      return true;
    }
  }
}

return false;

читаем больше.

Да, строки бесплатны, но почему мне приходится прокручивать страницы и страницы кода, когда это может быть вдвое меньше?

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

Кроме того, я всегда помещает скобки для вложенных if, где у меня есть вложенный

if (condition1)
  if (condition2)
    doSomething();
  else (condition2)
    doSomethingElse();

vs

if (condition1)
  if (condition2)
    doSomething();
else (condition2)
  doSomethingElse();

ужасно запутанно, поэтому я всегда пишу его как:

if (condition1)
{
  if (condition2)
    doSomething();
  else (condition2)
    doSomethingElse();
}

По возможности я использую тернарные операторы, но I never гнездятся в них .

0
задан M.Matt 29 March 2019 в 14:15
поделиться

1 ответ

Вам нужно проанализировать его как JsonNode, выполнить итерацию по каждому узлу в массиве и преобразовать в Book:

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

JsonNode root = mapper.readTree(json); // read as JsonNode 
JsonNode items = root.at("/items");
List<Book> books = new ArrayList<>();
if (items.isArray()) {
    ArrayNode array = (ArrayNode) items;
    array.forEach(n -> {
        Book book = mapper.convertValue(n.get("volumeInfo"), Book.class); // convert to Book
        books.add(book);
    });
}
System.out.println(books);
0
ответ дан Michał Ziober 29 March 2019 в 14:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: