json串不规范和java实体对象互转(json和实体对象字段命名不同转换)

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);

你可能感兴趣的:(java,java,开发语言)