Java 在jackson中将一个字段从字符串更改为json对象
我有一个类,其中Java 在jackson中将一个字段从字符串更改为json对象,java,json,jackson,Java,Json,Jackson,我有一个类,其中employeeDetails作为json字符串从数据存储中读取 public class Employee { private String name; @JsonProperty("employeeDetails") @JsonSerialize(???) private String employeeDetailsBlob; // getters and setters } 现在我想在响应中返回employeeDetails(动态类型)作为对象。我
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对象的字段上才能这样做。添加
@JsonRawValue
就成功了
public class Employee {
private String name;
@JsonProperty("employeeDetails")
@JsonRawValue
private String employeeDetailsBlob;
// getters and setters
}
如果employeeDetailsBlob是一个POJO,那么它将自动发生。无需指定任何内容删除JsonSerialize注释是的,这是一个POJO。但是我得到一个字符串,我想要一个json对象。默认情况下,你应该得到一个json对象,而不是一个字符串。我添加了@JsonSerializer只是为了参考,在实际代码中,它不在那里,我得到一个字符串。你为什么要将字段保留为字符串?你说这是一个POJOI我从数据存储中读取它,结果是一个字符串,当我必须发送响应时,我需要发送一个对象。啊,所以你应该用这个字符串构建一个POJO。。。但也许这太过分了是的,而且我不知道员工的类型。再次感谢@DavidBrossard@