У меня есть @RestController, который возвращает net.sf.json.JSONObject:
@PostMapping("/list")
public JSONObject listStuff(HttpServletRequest inRequest, HttpServletResponse inResponse) {
JSONObject json = new JSONObject();
...
return json;
}
Когда JSONObject содержит нулевую ссылку, выдается следующее исключение:
Could not write JSON: Object is null; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Object is null (through reference chain: net.sf.json.JSONObject[\"list\"]->net.sf.json.JSONArray[0]->net.sf.json.JSONObject[\"object\"]->net.sf.json.JSONNull[\"empty\"])"
Этоустаревший код, который мы сейчас очищаем, и в какой-то момент мы избавимся от явных манипуляций с JSON, но это будет огромным изменением, а сейчас я бы хотел просто избавиться от исключения.Я пробовал следующие решения:
- Определить
Include.NON_NULL
в Spring Mapper Object - так что этот кусок кода в моем WebMvcConfigurationSupportClass
:
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters)
{
ObjectMapper webObjectMapper = objectMapper.copy();
webObjectMapper.setSerializationInclusion(Include.NON_NULL);
converters.add(new MappingJackson2HttpMessageConverter(webObjectMapper));
}
Установка следующего свойства в application.yml:
spring.jackson.default-property-inclusion=non_null
Проверка версии
com.fasterxml.jackson
- в дереве зависимостей найдено только 2,9.7.
Нетпомогло все вышеперечисленное.
Есть предложения о том, как заставить Spring игнорировать нулевые значения в net.sf.json.JSONObjects?