java - 无法从 VALUE_STRING token 中反序列化 java.lang.String[] 的实例

标签 java android json jackson

无法从 VALUE_STRING token [...] 中反序列化 java.lang.String[] 的实例(通过引用链:[...].model.User["ethnicities"])

我有一个带有属性ethnicities的用户对象。

据我所知,错误是因为 json“类型”与属性类型不匹配,但在我的情况下,两者都是字符串数组。

我做错了什么吗?

此外,我无法弄清楚 VALUE_STRING 在解析中代表什么。

服务器端使用 Loopback,并且种族属性定义如下:

“种族”:[ ”” ]

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

谢谢!

最佳答案

尝试将此标志设置为ObjectMapper:

mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

关于java - 无法从 VALUE_STRING token 中反序列化 java.lang.String[] 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43131982/

相关文章:

java - 我想从 MongoDB 中的列表介绍 hashmap 获取数据 - Java

android - 如何在现有 Activity 之间切换?

json - 为什么JSON编码需要引用Perl版本字符串?

javascript - 无法传递 json 数组

javascript - 从 JSON Store 的子集创建 Store

java - 设置 java 语言环境设置

java - Java 掷骰子分配 : Calling a Method

java - 取消 asyncTask 成本昂贵吗?

java - 仅最后一个值被添加到 JSON 对象

java - API 21(android 5) 及以下版本上的正则表达式模式错误