我有一个这样的JSON:
{
"commonObjects": [
{
"type": "C",
"C": "1234567890"
},
{
"type": "C",
"c": "0987654321"
},
{
"type": "B",
"b": "ABCDEFGH"
},
{
"type": "A",
"A": "11111111",
"AA": "22222222"
}
]
}
所有类型都可以包含可变时间,或者只能有一种类型只有一次。
在SpringBoot应用程序中,我有三个类,扩展了公共类。
public class AObject extends CommonObject {
@JsonProperty("A")
private String a;
@JsonProperty("AA")
private String aa;
}
public class BObject extends CommonObject {
@JsonProperty("B")
private String b;
}
public class CObject extends CommonObject {
@JsonProperty("C")
private String c;
}
public class CommonObject {
private String type;
}
public class CommonObjects {
List<CommonObject> commonObjects;
}
我有两种方法来序列化和反序列化它。
return objectMapper.writeValueAsString(commonObjects);
...
return objectMapper.readValue(jsonValue, CommonObjects.class);
虽然测试序列化是可以的,但是反序列化在默认情况下不起作用。所以我修改了<code>CommonObject</code>如下:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "type",
visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = AObject.class, name = "A"),
@JsonSubTypes.Type(value = BObject.class, name = "B"),
@JsonSubTypes.Type(value = CObject.class, name = "C")
})
public class CommonObject {
private String type;
}
现在,反序列化工作正常,但序列化不行。json值中包含属性< code>type两次。
有什么方法可以处理这个特殊的问题,还是我必须自己编写自定义反序列化器?
您的< code>CommonObject类中有两个问题需要解决。
可见 = true
(因此默认为 visible = false
)。中的类型
不会反序列化为 Java 类型
属性。私有字符串类型;
@JsonTypeInfo
和@JsonSubTypes
类型,而不需要从 Java 类型
属性序列化。问题内容: 我是C ++的新手。使用序列化和反序列化类型数据的最简单方法是什么。我发现了一些使用示例,但它们对我来说是晦涩的。 问题答案: 请注意,将键解释为路径,例如,将对“ ab” =“ z”放置将创建{“ a”:{“ b”:“ z”}} JSON,而不是{“ ab”:“ z”} 。否则,使用是微不足道的。这是一个小例子。
本文向大家介绍.NET中JSON的序列化和反序列化的几种方式,包括了.NET中JSON的序列化和反序列化的几种方式的使用技巧和注意事项,需要的朋友参考一下 一、什么是JSON JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立 于编程语言的文本格式来存
嗨,我有LogEventObject在客户端用于记录事件,我想使用REST API将其发送到服务器。我将LogEventObject转换为json字符串,并通过REST将其作为有效载荷发送。在服务器端,我使用Groovy,当我尝试做对象apper.read值()时,我得到以下错误。 com.fasterxml.jackson.databind.JsonMappingExc0019:找不到非具体的集
本文向大家介绍ASPNET中JSON的序列化和反序列化的方法,包括了ASPNET中JSON的序列化和反序列化的方法的使用技巧和注意事项,需要的朋友参考一下 一、JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。 JSON是“名值对”的集合。结构由大括号'{}',中括号'[]',逗号',',冒号':',双引号'
问题内容: 当我向服务(我不拥有)发送请求时,它可能会以请求的JSON数据或看起来像这样的错误进行响应: 在这两种情况下,HTTP响应代码均为200 OK,因此我不能用它来确定是否存在错误-我必须反序列化响应以进行检查。所以我有这样的东西: 在这里,我有一个空的catch子句,该子句可能在标准执行路径中,这是一种难闻的气味……嗯,不仅仅是难闻的气味:它发臭。 您是否知道 “ TryParse” 响
我使用的是Spring Kafka 1.1.2-Spring Boot 1.5.0 RC版本,并且配置了一个自定义值serialiser/Deserialiser类,扩展/。这些类确实使用Jackson ObjectMapper,它可以通过构造函数提供。 是否可以从Spring上下文中注入ObjectMapper?我已经配置了一个ObjectMapper,我希望在序列化/反序列化程序中重用它。