public class TestJacksonColor {
public static void main(String [] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
Color black = new Color(0, 0, 0);
String json = objectMapper.writeValueAsString(black);
Color backToObject = objectMapper.readValue(json, Color.class);
}
}
代码试图采用java.awt.color类使用jackson对象映射器对其进行序列化。获取生成的json字符串并将其反序列化回java.awt.color类。但是在进行反序列化时会出现以下错误。
线程"main"com.fasterxml.jackson.databind.JsonMappingException中的异常:找不到适合类型[简单类型,类java.awt.颜色]的构造函数:无法从JSON对象实例化
您需要一个自定义序列化器和反序列化器。周围有一些预构建的模块,但我不知道有一个处理java.awt.Color
的模块。
这是一个定义序列化器/反序列化器对并注册一个模块来处理Color
对象的示例:
public class JacksonColorTest {
public static class ColorSerializer extends JsonSerializer<Color> {
@Override
public void serialize(Color value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartObject();
gen.writeFieldName("argb");
gen.writeString(Integer.toHexString(value.getRGB()));
gen.writeEndObject();
}
}
public static class ColorDeserializer extends JsonDeserializer<Color> {
@Override
public Color deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
TreeNode root = p.getCodec().readTree(p);
TextNode rgba = (TextNode) root.get("argb");
return new Color(Integer.parseUnsignedInt(rgba.textValue(), 16), true);
}
}
public static void main(String [] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Color.class, new ColorSerializer());
module.addDeserializer(Color.class, new ColorDeserializer());
objectMapper.registerModule(module);
Color testColor = new Color(1, 2, 3, 4);
String json = objectMapper.writeValueAsString(testColor);
Color backToObject = objectMapper.readValue(json, Color.class);
if (!testColor.equals(backToObject)) {
throw new AssertionError("round trip failed");
}
}
}
我想将json反序列化到类Foo: IBar有两个实现,但是当反序列化时,我总是想使用第一个实现。(理想情况下,这将使问题变得更容易,因为不需要运行时类型检查) 我相信我可以编写自定义反序列化程序,但我觉得一定有更简单的方法。 我找到了这个注释,它在没有列表的情况下非常有效。
问题内容: 我正在尝试使用Jackson将json数据转换为POJO对象。这是MainActivity和我的POJO类代码。我基本上收到了JsonMappingException错误。我还附上了整个日志。 MainActivity.java: Entries.java(这是POJO) 现在,我的日志中出现以下错误。因此,我无法继续工作。这是日志: 问题答案: 在 条目* 和 电话中 删除构造函数
我正在阅读Facebook的洞察,并试图让Jackson将JSON映射到Object。如果所有的数据都不是空的,我就会让它正常工作。但是我在尝试反序列化键值的空数组时遇到了问题。即使尝试了这篇文章:如何防止Map内部的null值和bean内部的null字段通过Jackson序列化,也没有解决问题:( 这是JSON: 我的代码段如下: 全堆栈跟踪:
问题:假客户机对返回的Spring boot Rest API进行API调用时,无法反序列化该页的属性。 Spring Boot:2.3.3.发布 春云假:2.2.5.发布 com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造的实例(没有像默认构造函数一样的创建者存在):无法从[源:(BufferedReader);行
我正在尝试将我的代码 Json 数组中的这个 元素反序列化为自定义类..但我不能: 这是类: 但是我收到此错误: com.fasterxml.jackson.databind.exc.MismatchedInputException: START_ARRAY无法从 [Source: UNKNOWN; line: -1, column: -1] at com.fasterxml.jackson.da