对象映射器反序列化映射数组
Object Mapper deserializing map array
{
"name" : "test",
"info": [
{
"key1": "test",
"key2": "blaa",
"key3": "yadayada"
},
{
"key4": "test1",
"key5": "blaa1",
"key6": "yadayada1"
}
],
}
我有这个 class 用于反序列化
public class Account{
private String name;
private Map<String,String>[] info;
}
出于某种原因 info
没有被反序列化...即使 List<Map<String,String>>
也没有反序列化,它始终为 null,并且 name
正在工作
(我正在使用 ObjectMapper
)
代码
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable( DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
results = objectMapper.readValue(responseBody.getEntity().getContent(), Account.class);
谢谢
问题在于 您发布的 JSON 架构末尾的逗号不正确 ) 。尝试以下
假设 responseBody.getEntity().getContent()
是您发布的 JSON
Account.java
或更具体
private String name;
private Map<String,String>[] info;
//getters && setters && default constructor
反序列化方法
Account account = null;
ObjectMapper objectMapper = new ObjectMapper();
try {
account = objectMapper.readValue(responseBody.getEntity().getContent(), Account.class);
} catch (IOException e) {
e.printStackTrace();
}
这是一个错综复杂的问题。
- 您的 JSON 无效 - 去掉右方括号后的最后一个逗号
- 您的 POJO 显示没有可访问的方法来设置值(即反序列化为
Account
)
- 根据您的 post,
name
字段已反序列化,我想这意味着一些可访问的 setter 实际上存在,但您可能没有 post编辑了吗?
- 如果
info
静默无法序列化,可能是因为您的 ObjectMapper
已配置 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
为 false
- 请参阅 docs。
- 您可以为
info
使用 List<Map<String, String>>
,或者保留 Map<String, String>[]
- 这与您的问题无关。
{
"name" : "test",
"info": [
{
"key1": "test",
"key2": "blaa",
"key3": "yadayada"
},
{
"key4": "test1",
"key5": "blaa1",
"key6": "yadayada1"
}
],
}
我有这个 class 用于反序列化
public class Account{
private String name;
private Map<String,String>[] info;
}
出于某种原因 info
没有被反序列化...即使 List<Map<String,String>>
也没有反序列化,它始终为 null,并且 name
正在工作
(我正在使用 ObjectMapper
)
代码
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable( DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
results = objectMapper.readValue(responseBody.getEntity().getContent(), Account.class);
谢谢
问题在于 您发布的 JSON 架构末尾的逗号不正确 ) 。尝试以下
假设 responseBody.getEntity().getContent()
是您发布的 JSON
Account.java
或更具体
private String name;
private Map<String,String>[] info;
//getters && setters && default constructor
反序列化方法
Account account = null;
ObjectMapper objectMapper = new ObjectMapper();
try {
account = objectMapper.readValue(responseBody.getEntity().getContent(), Account.class);
} catch (IOException e) {
e.printStackTrace();
}
这是一个错综复杂的问题。
- 您的 JSON 无效 - 去掉右方括号后的最后一个逗号
- 您的 POJO 显示没有可访问的方法来设置值(即反序列化为
Account
) - 根据您的 post,
name
字段已反序列化,我想这意味着一些可访问的 setter 实际上存在,但您可能没有 post编辑了吗? - 如果
info
静默无法序列化,可能是因为您的ObjectMapper
已配置DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
为false
- 请参阅 docs。 - 您可以为
info
使用List<Map<String, String>>
,或者保留Map<String, String>[]
- 这与您的问题无关。