gpt4 book ai didi

java - 将内部 JSON 对象提取为 Jackson 中的 String

转载 作者:行者123 更新时间:2023-12-02 00:56:22 25 4
gpt4 key购买 nike

我想使用 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>>() {
})

异常(exception):

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token

我哪里做错了?

最佳答案

如果你不在乎,那么你可以忽略这个属性:

@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;

关于java - 将内部 JSON 对象提取为 Jackson 中的 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61341049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com