ObjectMapper类是Jackson库的主要类。这里需要引入到项目中。
jsonString转javaBean对象时忽略大小写及下划线String data = '{\'pAy_cOdE\':\'123\',\'Memo\':\'001\'}'; UppVirAccountCloseVo copyVo = JSON.parseObject(data, UppVirAccountCloseVo.class);fastjson对属性的大小方法进行封装,对大小写及下划线都可以转换。结果: payCode=123
String sbean = JSON.toJSONString(copyVo); System.out.println(sbean);fastjson将对象转换json打印的是对象属性名称一致的。对@JsonProperty(value = '')失效
javaBean转json字符串,没有的属性默认不显示,并且对注解@JsonProperty(value = '')失效,因为@JsonProperty注解是jackson包的注解,fastjson不能使用。vo.setMemo('');//设置为空字符串则打印空字符串。String sBean = JSON.toJSONString(vo);{'memo':'memo','payCode':'123'}
javaBean转json字符串,没有的属性默认null,注解和objectMapper都是jackSon包下的方法。@JsonInclude(Include.NON_EMPTY)@JsonProperty(value = 'Name')序列化时为Name属性Include.Include.ALWAYS (Default / 都参与序列化) Include.NON_DEFAULT(当Value 为默认值的时候不参与,如Int a; 当 a=0 的时候不参与)Include.NON_EMPTY(当Value 为“” 或者null 不输出)Include.NON_NULL(当Value 为null 不输出)
ObjectMapper objectMapper = new ObjectMapper();objectMapper.writeValueAsString(vo);//打印没有值的属性都为null,如果不想参与序列化,则使用注解JsonInclude。{'id':null','PayCode':'123','Status':false,'Memo':'memo'}
如果想让javabean对象的属性序列化时是另外的名称可以使用,@JsonProperty(value = 'Status')注解