Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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_Serialization_Jackson - Fatal编程技术网

Java 在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

我想使用Jackson反序列化以下JSON对象

[
    {
      "_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;