Jackson将字符串转换为对象

16

Link.java

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "rel", "href","method" })
public class Link {

    @JsonProperty("rel")
    private String rel;
    @JsonProperty("href")
    private String href;
    @JsonProperty("method")
    private Method method;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}

我有一个使用fasterxml jackson注解的第三方类。我可以使用指定的toString()方法将给定对象转换为字符串。是否有办法使用该字符串获取类型为Link的对象?

注意:对象本身具有嵌入式对象(其中包含几个嵌入式对象),这些对象也需要从字符串本身转换为Method对象。


2
使用jackson ObjectMapper::readValue和ObjectMapper::writeValueAsString,而不是使用toString。 - pvpkiran
1
使用 new ObjectMapper().readValue(jsonString, Link.class); - Praneeth Ramesh
1
@pvpkiran...尽管ToStringBuilder可以配置为输出JSON,但ObjectMapper能够使用它。 - slim
1
是的,你可以使用toString()方法,但在嵌套对象和集合的情况下,它的性能可能非常差。尝试使用toString()方法和ObjectMapper打印一个Map或List,看看它们之间的区别。 - pvpkiran
1个回答

63

将@pvpkiran的评论放入回答中。

使用com.fasterxml.jackson.databind中的ObjectMapper类。

ObjectMapper objectMapper = new ObjectMapper();

从对象转换为字符串:

String jsonString = objectMapper.writeValueAsString(link);

从字符串转换为对象:

Link link = objectMapper.readValue(jsonString, type)

我们也可以这样调用:String jsonString = objectMapper.writeValueAsString(Object); - Lova Chittumuri
1
如果不知道类的类型怎么办? - aswzen
Java不能神奇地确定类类型吗?你可以有很多可能适合它的类。 - Hoshang Charania

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接