Как выполнить итерацию карты в JSON, когда значения содержат список и ссылка на список имеет значение NULL - PullRequest
0 голосов
/ 07 октября 2018

Этот класс возвращает строку JSON, но значения Map, содержащие список, возвращают исключение NULL-указателя.

Пробовал различные упомянутые опции, все еще получая то же исключение нулевого указателя.

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;

public class JacksonFoo
{
  public static void main(String[] args) throws Exception
  {
    Map<String, Foo> foos = new HashMap<String, Foo>();
    foos.put("foo1", new Foo("foo1"));
    foos.put("foo2", new Foo(List<DetailMessage>));
    foos.put("foo3", null);
    foos.put(null, new Foo("foo4"));

    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
    mapper.setSerializationInclusion(Include.NON_NULL);
    // Since the DetailMessage field is null , Its throwing Null pointer //exception.
  }
}

1 Ответ

0 голосов
/ 07 октября 2018

Проблема, которая возникает у вас из-за значения null в качестве ключа на карте, структура JSON по умолчанию выглядит примерно так:

{
   "Key1" : "Value1",
   "Key2" : "Value2"...
} (This is the simplest form)

В JSON у нас не может быть ничего подобного null : "value" это нарушает базовый принцип JSON, поэтому Object Mapper не может преобразовать вашу Карту в строку JSON, вам нужно иметь все ненулевые ключи на карте, чтобы это работало

, поэтому удаление строки foos.put(null, new Foo("foo4")); заставит ваш код работать

Даже если Map разрешает 1 ключ NULL, JSON не соответствует ему, поэтому вы сталкиваетесь с этой ошибкой

Надеюсь, это поможет!

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...