Программисты JAVA общаются здесь
Anonymous
Существуют ли какие-либо условия, которые не позволяют модулю регистрироваться в ObjectMapper в Джексоне?
Сообщение
Anonymous » 30 окт 2024, 23:30
У меня есть следующий очень простой код для проверки функциональности пользовательского сериализатора в Джексоне. По какой-то причине модуль не регистрируется в ObjectMapper (по крайней мере, я не вижу его регистрации по результатам). Существуют ли какие-либо условия, которые не позволяют модулю зарегистрироваться в ObjectMapper?
Код: Выделить всё
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
public class TestJacksonCustomSerializer {
public class TheClass {
public String emptyString = null;
public String[] emptyStringArray= null;
public TheClass() {
}
public String getEmptyString() {
return emptyString;
}
public String[] getEmptyStringArray() {
return emptyStringArray;
}
}
public class NullStringJsonSerializer extends JsonSerializer {
@Override
public void serialize(String string, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
System.out.println("Processing value: " + String.valueOf(string));
if (string == null) jsonGenerator.writeString("");
}
}
public static void main(String[] args) throws Exception {
TestJacksonCustomSerializer testJacksonCustomSerializer = new TestJacksonCustomSerializer();
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(String.class, testJacksonCustomSerializer.new NullStringJsonSerializer());
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(simpleModule);
System.out.println("Number of registered modules: " + String.valueOf(objectMapper.getRegisteredModuleIds().size()));
TheClass theClass = testJacksonCustomSerializer.new TheClass();
System.out.println(objectMapper.writeValueAsString(theClass));
}
}
Выход:
Код: Выделить всё
Number of registered modules: 0
{"emptyString":null,"emptyStringArray":null}
Я использую jackson 2.12.7
Подробнее здесь:
https://stackoverflow.com/questions/791 ... bjectmappe
1730320240
Anonymous
У меня есть следующий очень простой код для проверки функциональности пользовательского сериализатора в Джексоне. По какой-то причине модуль не регистрируется в ObjectMapper (по крайней мере, я не вижу его регистрации по результатам). Существуют ли какие-либо условия, которые не позволяют модулю зарегистрироваться в ObjectMapper? [code]import java.io.IOException; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.module.SimpleModule; public class TestJacksonCustomSerializer { public class TheClass { public String emptyString = null; public String[] emptyStringArray= null; public TheClass() { } public String getEmptyString() { return emptyString; } public String[] getEmptyStringArray() { return emptyStringArray; } } public class NullStringJsonSerializer extends JsonSerializer { @Override public void serialize(String string, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { System.out.println("Processing value: " + String.valueOf(string)); if (string == null) jsonGenerator.writeString(""); } } public static void main(String[] args) throws Exception { TestJacksonCustomSerializer testJacksonCustomSerializer = new TestJacksonCustomSerializer(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(String.class, testJacksonCustomSerializer.new NullStringJsonSerializer()); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(simpleModule); System.out.println("Number of registered modules: " + String.valueOf(objectMapper.getRegisteredModuleIds().size())); TheClass theClass = testJacksonCustomSerializer.new TheClass(); System.out.println(objectMapper.writeValueAsString(theClass)); } } [/code] Выход: [code]Number of registered modules: 0 {"emptyString":null,"emptyStringArray":null} [/code] Я использую jackson 2.12.7 Подробнее здесь: [url]https://stackoverflow.com/questions/79142594/are-there-any-conditions-that-do-not-allow-a-module-to-register-with-objectmappe[/url]