【发布时间】:2021-06-05 10:35:32
【问题描述】:
我有一个带有数组的 JSON 响应,但没有映射和抛出错误,我该如何处理这样的 JSON
{
"total":10,
"count":10,
"start":0,
"items":[
{
"ID":"Hyd4VVGtCNpyLh7JEOL3X-b92yollu9nb3KbweWxNaI=@mailhog.example",
"From":{"Relays":null,"Mailbox":"emails","Domain":"gmail.com","Params":""},
"To":[{"Relays":null,"Mailbox":"test","Domain":"gmail.com","Params":""}],
"Content":{"Headers":{"Content-Type":["multipart/mixed; \tboundary=\"----=_Part_27_47303298.1622881481751\""],
"Date":["Sat, 5 Jun 2021 11:24:42 +0300 (EEST)"],
"From":["test@gmail.com"],
"MIME-Version":["1.0"],
我试着像这样映射
public static class ResponseDto{
Integer total;
Integer count;
Integer start;
List<ItemDto> items;
//getters,setters
}
public static class ItemDto{
String id;
}
我得到一个错误:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ID" (class package.api.utils.ApiMailHogUtil$ItemDto), not marked as ignorable (one known property: "id"])
at [Source: (StringReader); line: 1, column: 50] (through reference chain: package.api.utils.ApiMailHogUtil$ResponseDto["items"]->java.util.ArrayList[0]->package.api
我做错了什么?
【问题讨论】:
-
用
@JsonProperty('ID')注释Java属性。 -
@MichalFoksa 似乎工作,谢谢。但是为什么总、计数、开始工作没有注释呢?
-
Json 和 Java 属性必须根据配置的命名策略匹配。默认命名策略是
LOWER_CAMEL_CASE(例如lowerCamelCase),因此total,count,startmatch,但是ID,Date,不会,除非您为@选择不同的命名策略987654335@,例如UPPER_CAMEL_CASE- 尽管您不会完全避免@JasonProperty注释。 -
搜索“objectmapper命名策略”
标签: java json objectmapper