杰克逊将字符串转换为对象
Posted
技术标签:
【中文标题】杰克逊将字符串转换为对象【英文标题】:Jackson Converting String to Object 【发布时间】:2017-10-03 21:49:33 【问题描述】: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);
我有这个带有fastxml jackson 注释的第三方类。我可以使用指定的 toString() 方法将给定对象转换为字符串。有什么方法可以使用该字符串来获取 Link 类型的对象吗?
注意:对象本身有一个嵌入对象(其中还有几个嵌入对象),这些也需要从字符串本身转换为 Method 对象。
【问题讨论】:
不要使用 toString 使用jackson ObjectMapper::readValue 和 ObjectMapper::writeValueAsString 使用new ObjectMapper().readValue(jsonString, Link.class);
@pvpkiran ...虽然ToStringBuilder
可以配置为输出JSON,ObjectMapper
可以使用。
是的,你可以,但在某些情况下,toString() 在嵌套对象和集合的情况下表现非常糟糕。尝试使用 toString 和 ObjectMapper 打印地图或列表并查看差异
【参考方案1】:
只需将@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); 如果不知道什么是类类型怎么办?以上是关于杰克逊将字符串转换为对象的主要内容,如果未能解决你的问题,请参考以下文章