java中@JSONField和@JsonProperty注解有什么区别呢?

下文笔者讲述Java中@JSONField@JsonProperty的不同之处,如下所示:

今天在springboot的开发中,
可以使用 @JSONField可正常转换
       但@JsonProperty无法进行转换
那么是什么原因呢?下文笔者将一一道来,如下所示
package com.java265;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.math.BigDecimal;

/**
 * java265.com 示例程序
 * @description 测试@JSONField和@JsonProperty注解
 * @AUTHER: java265.com
 * @DATE: 2022/5/1
 **/
@Data
public class JsonTest {

    //测试@JSONField注解
    @JSONField(name ="maomaoName")
    private String name;

    //测试@JsonProperty注解
    @JsonProperty("orderWorkNo")
    private String no;

    public static void main(String[] args) {
        String str = "{\n" +
                "    \"maomaoName": \"maomao"\,\n" +
                "    \"orderWorkNo\": \"898989\"\n" +
                "    \n" +
                "}";
        JsonTest jsonTest = JSONObject.parseObject(str, JsonTest.class);
        System.out.println("jsonTest="+jsonTest);
    }
}

------运行以上代码,将输出以下信息------
jsonTest=JsonTest(name="maomao",orderWorkNo=null)
以上出现失败的原因:
   响应时是使用FastJson做json序列化(阿里巴巴的)
   如果换成net.sf.json.JSONObject 则jsonProperty可进行相应的转换

jsonField和jsonProperty的区别

bean转换成Json字符串
   @JsonProperty:ObjectMapper().writeValueAsString(Object value)
   @JSONField:ObjectMapper().readValue(String content, Class valueType)

Json字符串转化为bean:
  @JsonProperty:ObjectMapper().readValue(String content, Class valueType)
  @JSONField:JSONObject.parseObject(String content, Class valueType)
  @JSONField这个注解可以用于get、set以及属性上面

@JSONproperty这个注解用于属性上面
   例:在属性名上面增加@JsonProperty(value="name")

jackson的@JsonIgnore使用
   在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
   使用方法:当在属性或方法上标记@JsonIgnore时,则返回json数据中不包含该属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值