json串不规范和java实体对象互转
有的第三方提供的接口文档是这样(全大写、下划线、不驼峰)
PERSON_NAME 必填
mobile 必填
Sex 必填
HOBBY 必填
不知道是不是报复性写的接口文档,看到都无语了。完全不遵守命名规范。
他文档这么写,我们建对象可不能这么写。
因此可以用到@JsonProperty 注解
/**PERSON_NAME 必填
mobile 必填
Sex 必填
HOBBY 必填 **/
@JsonProperty("PERSON_NAME")
private String personName;
// 规范的可以不用加
private String mobile;
@JsonProperty("Sex")
private String sex;
@JsonProperty("HOBBY")
private String hobby;
传参
传给第三方的时候,可以进行处理
User user = new User("张三","13222222222","0","xxx")
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user)
System.out.println(json); //这里打印出来就是文档所要的格式了
return json ;
接收参数
第三方传参:
{
"PERSON_NAME":"张三",
"mobile":"13222222222",
"Sex":"1",
"HOBBY":"xxx",
}
接收转换实体:
User user = new ObjectMapper().readValue(jsonResult,User.class);
当json的字段多于对象的字段,readValue的时候就会报错。
因此最好在readValue之前设置下
ObjectMapper objMapper = new ObjectMapper ();
objMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);