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数据中不包含该属性
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。