@JSONField、@JsonProperty、@JsonAlias字段映射差别

目录

        1.@JsonAlias

        2.@JsonProperty

        3.@JSONField


1.@JsonAlias

@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataCenterResult {

    @JsonAlias(value = "guid")
    private String id;

    private String applyNumber;

    private String approvalStatus;

    private String message;

}

 实现:

public static void main(String[] args){
    ObjectMapper objectMapper = new ObjectMapper();
    DataCenterResult dataCenterResult = new DataCenterResult("1","A1","1","申请单");
    System.out.println("toJSON:"+objectMapper.writeValueAsString(dataCenterResult));
        
    String str = "{\"guid\":\"3\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
    System.out.println("toObject:"+objectMapper.readValue(str, DataCenterResult.class));
        
    String str2 = "{\"id\":\"4\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
    System.out.println("toObject2:"+objectMapper.readValue(str2, DataCenterResult.class));
}

结果:使用【id】、【guid】都能映射到id字段

 

 2.@JsonProperty

@JsonProperty(value = "guid")
private String id;

 实现:同@JsonAlias

 结果:对象转换为JSON时,会直接使用JsonProperty中的name值作为属性名。

JSON转对象时,如JSON中属性名与JsonProperty中name值不一致时会抛出异常。

 3.@JSONField

 依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>
@JSONField(value = "guid")
private String id;

实现: 

public static void mian(String[] args){
    DataCenterResult dataCenterResult = new DataCenterResult("1","A1","1","申请单");
    System.out.println("toJSON:"+JSON.toJSONString(dataCenterResult));

    String str = "{\"guid\":\"3\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
    DataCenterResult dataCenterResult1 = JSON.parseObject(str,DataCenterResult.class);
    System.out.println("toObject:"+dataCenterResult1);

    String str2 = "{\"id\":\"4\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
    DataCenterResult dataCenterResult2 = JSON.parseObject(str2,DataCenterResult.class);
    System.out.println("toObject2:"+dataCenterResult2);
}

结果:对象转JSON时,会直接使用JSONField中的name值作为字段名。

JSON转对象时,只会映射JSONField中的name所对应的属性。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值