我目前正在使用Spark框架开发RESTful应用程序,我使用Jackson进行序列化。我遇到了这样的问题:@JsonPropertyOrder被忽略了。
这是我的POJO:
@Data
@JsonPropertyOrder({"id", "company", "title", "infos", "startDate", "endDate"})
public class Info {
@JsonProperty("id")
long id;
@JsonProperty("company")
Company company;
@JsonProperty("title")
String title;
@JsonProperty("infos")
List<Prize> infos;
@JsonProperty("startDate")
Date startDate;
@JsonProperty("endDate")
Date endDate;
public Info() {}
}
我使用此方法生成JSON:
public static String generateJSONResponse(Object response) {
if (responseObjectMapper == null) {
responseObjectMapper = new ObjectMapper(new JsonFactory());
responseObjectMapper.enable(SerializationFeature.INDENT_OUTPUT);
}
try {
return responseObjectMapper.writeValueAsString(response);
} catch (IOException ioe) {
// Must not occur
}
// Something really unexpected happened, so we return unknown response;
return ErrorMessages.ERROR_RESPONSE_UNKNOWN;
}
最后我收到了这个:
{
"status": 0,
"result": {
"infoList": [
{
"infos": [...],
"id": 2,
"title": "...",
"company": {...},
"startDate": 1445238000000,
"endDate": 1445792400000
},
...
]
}
}
我做错了什么?杰克逊还有什么不对劲?有人可以帮我吗?
另外,我尝试使用Jackson版本2.6.3和2.3.5。两者的工作方式相同。
答案 0 :(得分:1)
Lomboks @Data干扰杰克逊反序列化。删除它并尝试..
答案 1 :(得分:0)
注释JavaDoc也回应了&#34;无序&#34;集合:http://fasterxml.github.io/jackson-annotations/javadoc/2.3.0/com/fasterxml/jackson/annotation/JsonPropertyOrder.html
此注释可能会或可能不会对反序列化产生影响:for 基本的JSON处理没有任何效果,但对于其他支持的数据 类型(或结构约定)可能有。
这可能解释了为什么它不起作用。
答案 2 :(得分:0)
检查您是否导入了正确的“JsonPropertyOrder”包:
这对我有用: import com.fasterxml.jackson.annotation.JsonPropertyOrder;