gpt4 book ai didi

java - jackson 资源访问异常 : I/O error: Unrecognized field

转载 作者:行者123 更新时间:2023-11-30 04:49:25 26 4
gpt4 key购买 nike

我有这个 json 文件

[
{
"foo":{
"comment":null,
"media_title":"How I Met Your Mother",
"user_username":"nani"
}
},
{
"foo":{
"comment":null,
"media_title":"Family Guy",
"user_username":"nani"
}
}
]

所以它是一个 Foo 实体数组。

然后我得到了我的 Foo 对象:

    import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonRootName;

@JsonRootName("foo")
public class Foo {

@JsonProperty
String comment;
@JsonProperty("media_title")
String mediaTitle;
@JsonProperty("user_username")
String userName;

/** setters and getters go here **/

}

然后我的 FooTemplate 如下:

public List<Foo> getFoos() {
return java.util.Arrays.asList(restTemplate.getForObject(buildUri("/foos.json"),
Foo[].class));
}

但是当我运行简单的测试时,我得到:

org.springframework.web.client.ResourceAccessException: I/O error: Unrecognized field "foo" (Class org.my.package.impl.Foo), not marked as ignorable at [Source: java.io.ByteArrayInputStream@554d7745; line: 3, column: 14] (through reference chain: org.my.package.impl.Foo["foo"]); 

最佳答案

Exception 表明它正在尝试将 JSONObject(顶级 JSONArray 的元素)反序列化为Foo 对象。因此,您没有 Foo 实体数组,而是具有 Foo 成员的对象数组。

这是ObjectMapper正在尝试做的事情:

[
{ <---- It thinks this is a Foo.
"foo":{ <---- It thinks this is a member of a Foo.
"comment":null,
"media_title":"How I Met Your Mother",
"user_username":"nani"
}
},
{ <---- It thinks this is a Foo.
"foo":{ <---- It thinks this is a member of a Foo.
"comment":null,
"media_title":"Family Guy",
"user_username":"nani"
}
}
]

正因为如此,Exception才会提示

Unrecognized field "foo" (Class org.my.package.impl.Foo)

也许您想取出第一个 JSONObject,并去掉 foo 标识符。

[
{
"comment":null,
"media_title":"How I Met Your Mother",
"user_username":"nani"
},
{
"comment":null,
"media_title":"Family Guy",
"user_username":"nani"
}
]

编辑

您也可以创建一个新的 Bar 对象来保存单个 Foo 实例,并尝试将其解码为一个数组。

class Bar {
@JsonProperty
private Foo foo;

// setter/getter
}

public List<Bar> getBars() {
return java.util.Arrays.asList(restTemplate.getForObject(buildUri("/foos.json"),
Bar[].class));
}

关于java - jackson 资源访问异常 : I/O error: Unrecognized field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10174820/

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