【发布时间】:2019-10-14 21:47:16
【问题描述】:
我有一个类,其中 employeeDetails 从数据存储中读取为 json 字符串。
public class Employee {
private String name;
@JsonProperty("employeeDetails")
@JsonSerialize(???)
private String employeeDetailsBlob;
// getters and setters
}
现在我想在响应中将employeeDetails(动态类型)作为对象返回。我已经使用@JsonProperty 更改了名称,我所拥有的所有示例都是使用@JsonSerialize(using = Employee.class)。
所以我的回复应该是这样的
{name: "foo", employeeDetails: { age: 21 }}
我得到的是
{name: "foo", employeeDetails: "{ age: 21 }"}
我可以将@JsonSerialize 添加到我的班级,但我必须自己处理所有字段并在被覆盖的方法中执行类似的操作。
jgen.writeFieldName("employeeDetails");
SerializedString serializedString = new SerializedString(empl.getEmployeeDetailsBlob());
jgen.writeRawValue(serializedString);
有没有办法我可以使用注释来做到这一点,而且也只能在我想从 json 字符串更改为 json 对象的字段上。
【问题讨论】:
-
如果employeeDetailsBlob 是POJO,那么这将自动发生。无需指定任何内容
-
去掉JsonSerialize注解
-
是的,它是一个 POJO。但我得到一个字符串,我想要一个 json 对象。
-
默认你应该得到一个 JSON 对象,而不是字符串
-
我添加了@JsonSerializer 仅供参考,在实际代码中,它不存在,我得到一个字符串。