Java 在Jackson中将内部JSON对象提取为字符串
我想使用Jackson反序列化以下JSON对象Java 在Jackson中将内部JSON对象提取为字符串,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我想使用Jackson反序列化以下JSON对象 [ { "_foo": "foo-value", "_bar": {// bar json object } }, { "_foo": "foo-value", "_bar": {// bar json object } } ] 我不关心barJSON对象,所以我只想将其解析为字符串。下面是我的Pojo类的外观: @Data public class Document
[
{
"_foo": "foo-value",
"_bar": {// bar json object }
},
{
"_foo": "foo-value",
"_bar": {// bar json object }
}
]
我不关心bar
JSON对象,所以我只想将其解析为字符串。下面是我的Pojo类的外观:
@Data
public class Document {
@JsonProperty("_foo")
private String foo;
@JsonProperty("_bar")
private String bar;
}
当我尝试使用Jackson和以下代码反序列化对象时。它抛出一个异常
List<Document> docs = mapper.readValue(fileContent, new TypeReference<List<Document>>() {
})
我做错了什么?如果你不在乎,那么你可以忽略此属性:
@Data
@JsonIgnoreProperties(value = {"_bar"})
public static class Document { ...
也可以使用JsonNode添加setter:
@JsonProperty("_bar")
private String bar;
@JsonSetter
private void setBar(JsonNode jsonNode) {
this.bar = jsonNode.toString();
}
private void setBar(String bar) {
this.bar = bar;
}
或者改用JsonNode作为字段:
@JsonProperty("_bar")
private JsonNode bar;
问题出现在“\u bar:{//bar json object}
jackson将其视为JSON\u对象
,而不是字符串
您可以为Bar创建一个类,并将其用作
@JsonProperty("_bar")
private Bar bar;
您也可以尝试使用JSONNode
@JsonProperty("_bar")
private JsonNode bar;
谢谢,现在当我试着把它当作一个字符串时,它给了我:com.fasterxml.jackson.databind.exc.MismatchedInputException:由于输入结束,没有要映射的内容请看我对问题的回答。您必须使用
@jsondeseserialize(converter=JsonNode2StringConverter.class)
注释覆盖bar
属性,它应该适合您。
@JsonProperty("_bar")
private JsonNode bar;