Java 使用Jackson转换json对象中的原始json字符串

Java 使用Jackson转换json对象中的原始json字符串,java,json,jackson,jackson-databind,Java,Json,Jackson,Jackson Databind,Json对象可以有字符串,这些字符串可以表示另一个Json对象。例: { "foo" : "foo", "bar" : "{\"fizz\":\"baz\"}" } 以上JSON为Java字符串: "{ \"foo\" : \"foo\", \"bar\" : \"{\\\"fizz\\\":\\\"baz\\\"}\"}" 假设采用上述结构,我如何使jackson将bar属性反序列化为另一个POJO?例子 class FooBar{ private String foo;

Json对象可以有字符串,这些字符串可以表示另一个Json对象。例:

{
  "foo" : "foo",
  "bar" : "{\"fizz\":\"baz\"}"
}
以上JSON为Java字符串:

"{ \"foo\" : \"foo\", \"bar\" : \"{\\\"fizz\\\":\\\"baz\\\"}\"}"
假设采用上述结构,我如何使jackson将bar属性反序列化为另一个POJO?例子

class FooBar{
    private String foo;
    private FizzBazz bar;
}

class FizzBazz {
    private String fizz;
}

使用com.fasterxml.jackson.core中的ObjectMapperjackson数据绑定

public void convertToPojo(){
String jsonInString="{ \"foo\" : \"foo\", \"bar\" : \"{\\\"fizz\\\":\\\"baz\\\"}\"}";

ObjectMapper mapper = new ObjectMapper();
FooBarclsObject = mapper.readValue(jsonInString, FooBar.class);
}

使用com.fasterxml.jackson.core中的ObjectMapperjackson数据绑定

public void convertToPojo(){
String jsonInString="{ \"foo\" : \"foo\", \"bar\" : \"{\\\"fizz\\\":\\\"baz\\\"}\"}";

ObjectMapper mapper = new ObjectMapper();
FooBarclsObject = mapper.readValue(jsonInString, FooBar.class);
}

带注释的bar属性:@JsonDeserialize(convertor=FizzBazzConverter.class)它的实现扩展了StdConvertor,只使用另一个objectMapper将字符串转换为FizzBazz。对于我的情况来说,这不是一个足够通用的解决方案。我可以把酒吧当作一根线来读,然后把它映射到FizzBazz,但我希望Jackson能一次帮我做到这一点。外部json对象可能包含许多原始json字符串。请使用所有必需的类更新您的实际问题。然后很容易给你一个答案。带注释的bar属性:@JsonDeserialize(convertor=FizzBazzConverter.class)它的实现扩展了StdConvertor,只使用另一个objectMapper将字符串转换为FizzBazz。对于我的情况来说,这不是一个足够通用的解决方案。我可以把酒吧当作一根线来读,然后把它映射到FizzBazz,但我希望Jackson能一次帮我做到这一点。外部json对象可能包含许多原始json字符串。请使用所有必需的类更新您的实际问题。那就很容易给你答案了。