【发布时间】:2018-08-23 13:56:17
【问题描述】:
代码sn-p:
ObjectMapper objectMapper = new ObjectMapper();
try {
this.persons = objectMapper.readValue(new File(fileName),
new TypeReference<List<Person>>() {
});
} catch (IOException ex) {
}
json 输入示例:
[
{
"id": 1,
"name": "The Best",
"email": "thenextbigthing@gmail.com",
"birthDate": "1981-11-23"
},
{
"id": 2,
"name": "Andy Jr.",
"email": "usa@gmail.com",
"birthDate": "1982-12-01"
},
{
"id": 3,
"name": "JohnDoe",
"email": "gameover@gmail.com",
"birthDate": "1990-01-02"
},
{
"id": 4,
"name": "SomeOne",
"email": "rucksack@gmail.com",
"birthDate": "1988-01-22"
},
{
"id": 5,
"name": "Mr. Mxyzptlk",
"email": "bigman@hotmail.com",
"birthDate": "1977-08-12"
}
]
我想知道是否可以(然后如何?)在创建对象之前检查值并将其添加到列表中。例如,如果电子邮件地址或名称超过 30 个字符,或者名称与某些正则表达式匹配等,我不希望创建对象并将其添加到列表中。相反,我想用类似“输入数据错误”。我不允许创建更多的自定义类。
【问题讨论】:
-
如果您使用的是 DTO,您可以将 set 方法设置为您的规则。这是我的建议。
-
Jackson 用于 JSON 解析而不是用于验证。
-
如果我想检查添加到列表中的最后一个对象然后在出现问题时停止解析怎么办?
-
查看我的回答/建议。