@JSONField位于alibaba的fastjson中。
JSONObject userJson = JSONObject.parseObject(userString);
User user = JSON.toJavaObject(userJson,User.class);
@JsonProperty位于jackson中
// jackson转换工具
private static final ObjectMapper objectMapper = new ObjectMapper()
.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
String str = objectMapper.writeValueAsString(new MessageEntity());
List<String> tidList = objectMapper.readValue(tidListSrt, new TypeReference<List<String>>() {});
各种类型的转换,详情各api
这次主要遇到的是对es中的数据直接转对象后,然后将对象返回给调用者,提供给调用者时,需遵循标准的驼峰,而不是ES中的下划线。
对于要封装的实体类,对象属性中,可以使用@JsonPropertity(value=“user_name”)和@JSONField(name ="user_name")将es中的user_name通过fastjson或者jackson直接封装成User对象。其属性userName均是存在值,但是在通过前台接口返回给调用者时,使用@JsonProperty时,给调用者的就是user_name,通过@JSONField注解时,调用者就是标准的userName驼峰格式。
所以在使用这个json转换时,还是要注意区分一下的。。