无法从VALUE_STRING令牌[...]中反序列化java.lang.String []的实例(通过参考链:[...]。model.User [“ethnicities”])
我有一个带有属性ethnicities
的用户对象。
据我所知,错误是因为json“type”与属性类型不匹配,但在我的情况下,两者都是String数组。
我做错了吗?
另外,我无法弄清楚解析中VALUE_STRING
代表什么。
服务器端使用Loopback,种族属性定义如下:
"ethnicities": [
""
]
Android客户端正在使用Jackson将json映射到pojo,反之亦然。 pojo的种族看起来像这样:
private String[] ethnicities;
public String[] getEthnicities() {return ethnicities;}
public void setEthnicities(String[] ethnicities) {this.ethnicities = ethnicities;}
映射到json:
try {
ObjectMapper mapper = new ObjectMapper();
jsonUserObject = mapper.writeValueAsString(user);
} catch (IOException e) {
System.out.println("IOException converting user object to JSON");
}
和json的映射:
try {
ObjectMapper mapper = new ObjectMapper();
user = mapper.readValue(userObjectJSON, User.class);
} catch (IOException e) {
System.out.println("IOException converting JSON to user object");
}
以下是传入json的一些示例:
"ethnicities": [
"Asian",
"American Indian",
"Hispanic"
]
"ethnicities": [
"Caucasian"
]
"ethnicities": null
谢谢!
答案 0 :(得分:0)
尝试将此标记设置为ObjectMapper
:
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
答案 1 :(得分:0)
您要处理的是整个JSON吗?
我今天也面临着类似的问题。看来,当要序列化的属性是JSON根属性时,不可能将JSON-Array反序列化为Java String []或List。
最后,我将值包装在另一个对象中。在您的情况下,可能看起来像这样:
"user": {
"ethnicities": [
"Asian",
"American Indian",
"Hispanic",
]
}
也许这只是一个配置问题-但我不知道如何在不包装阵列的情况下进行处理。
希望,这会有所帮助。 丹尼尔