Проблема при использовании JoiObject Mapper - PullRequest
0 голосов
/ 09 апреля 2020

Мы используем JoiObjectMapper для преобразования класса POJO в Json String. Версия Jackson: 2.8.x Ниже приведена конфигурация сопоставления объектов:


import com.amazon.jacksonion.JoiObjectMapper;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;


    public static ObjectMapper createObjectMapper() {        
        ObjectMapper mapper = new JoiObjectMapper();

        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

        mapper.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY);

        mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);

        mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        mapper.registerModule(new JodaModule());

        mapper.registerModule(new JavaTimeModule());

        SimpleModule module = new SimpleModule();

        module.addSerializer(new JavaUtilDateSerializer());
        mapper.registerModule(module);
return mapper;
}

Мы используем objectMapper.writeValueAsString(object); метод для преобразования POJO в Json.

@Data
public class POJO {
@JsonProperty("a")
private String a;

@JsonProperty("b")
private String b;

}

Проблема: при при преобразовании в строку средство отображения объектов удаляет двойные кавычки из Json значений ключа.

фактический результат :

{
 a : "abc",
 b : "cde"
} 

ожидаемый результат :

{
   "a" : "abc",
   "b" : "cde"
}

Нам нужен json с двойными кавычками. Может ли кто-нибудь помочь нам, что нам здесь не хватает ??

1 Ответ

0 голосов
/ 09 апреля 2020

Я думаю, что вы ищете логическое свойство JsonGenerator.Feature.QUOTE_FIELD_NAMES. Если я хорошо помню, это было по умолчанию несколько лет go. Может быть, это изменилось сейчас. Попробуйте установить true или false, чтобы увидеть, работает ли он.

...