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

java-经验王 Java经验 发布时间:2022-05-01 20:41:27 阅读数:17112 1 @JSONField
下文笔者讲述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数据中不包含该属性
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202205/16514089353226.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者