利用@JSONField处理属性与json的key值不对应问题

@Data
public class BaseInfoJsonPo {

    @JSONField(name="vendorItemCode")
    private String itemNumber;

    /**
     * 供应商产品型号
     */
    @JSONField(name="vendorProductModel")
    private String itemSize;

    /**
     * 供应商物料描述
     */
    @JSONField(name="vendorItemDesc")
    private String description;

}

bean与jsonObject的相互转化:

JSONObject jsonObj = (JSONObject) JSON.toJSON(jsonBean);

 BaseInfoJsonPo jsonBean=jsonObj .toJavaObject(BaseInfoJsonPo .class);

问题:在bean转jsonObject时,当属性为null时,转化后对应的key不见了。

解决:JSONObject jsonObject =  JSONObject.parseObject(JSON.toJSONString(jsonBean,SerializerFeature.WriteNullStringAsEmpty));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
定制化@JsonField是指在使用Jackson库进行Java对象与JSON之间的转换时,可以自定义字段的命名、忽略某些字段以及指定字段的顺序。 1. 自定义字段名 使用Jackson库默认情况下,Java对象的属性名会被转换成JSON对象的key。如果需要指定JSON对象的key,可以使用@JsonField注解,并指定不同的。 例如: ```java public class User { @JsonField("id") private int userId; private String name; private int age; // 省略getter和setter方法 } ``` 上面的代码中,使用@JsonField注解指定了属性userId在转换成JSON对象时,对应key为"id"。 2. 忽略某些字段 有些情况下,Java对象中的某些属性并不需要转换成JSON对象的属性,可以使用@JsonIgnore注解来忽略这些属性。 例如: ```java public class User { private int userId; private String name; @JsonIgnore private String password; private int age; // 省略getter和setter方法 } ``` 上面的代码中,使用@JsonIgnore注解忽略了属性password,它不会被转换成JSON对象的属性。 3. 指定字段顺序 使用Jackson库默认情况下,转换后的JSON对象中的属性顺序与Java对象中的属性顺序是一致的。如果需要指定JSON对象中属性的顺序,可以使用@JsonPropertyOrder注解。 例如: ```java @JsonPropertyOrder({"name", "age"}) public class User { private int userId; private String name; private int age; // 省略getter和setter方法 } ``` 上面的代码中,使用@JsonPropertyOrder注解指定了JSON对象中属性的顺序为"name"、"age"、"userId"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值