Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jackson中将一个字段从字符串更改为json对象_Java_Json_Jackson - Fatal编程技术网

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@