ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

@JsonField和@JsonProperty的使用和区别

2021-11-18 12:00:06  阅读:219  来源: 互联网

标签:JsonProperty 实体类 String 区别 class finalName Person JsonField public


@JsonField

JsonField是位于fastjson包下的,实体类序列化为json字符串的时候,此类的原字段,序列化为json中的规定的字段

配合JSON.toJSONString(object),能将实体类转换成json字符串,配合JSON.parseObject(str,Object.class),能将字符串转换成实体类

添加依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

实体类

  • 若属性是私有的,必须要有set*方法,否则无法反序列化
public class Person{
  @JsonField(name = "name")
  private String finalName;
  
  public String getFinalName() {
        return FinalName;
  }

  public void setFinalName(String finalName) {
      FinalName = finalName;
  }
}

测试类

  • 注意,字符串转换为实体类时需要写原字段名
public class Test{
  public static void main(String[] args){
    Person person = new Person();
    person.setFinalName("张三");
    System.out.println(JSON.toJSONString(person));

    String str = "{\"name\":\"张三\"}";
    String str2 = "{\"finalName\":\"张三\"}";
    System.out.println(JSON.parseObject(str,Person.class));
    System.out.println(JSON.parseObject(str2,Person.class));
  }
}
image-20211118114557641

@JsonProperty

JsonProperty是位于jackson包里的,配合ObjectMapper的writeValueAsString(object)方法可以将实体类转换为字符串,配合ObjectMapper的readValue(str)可以将字符串转换为实体类

添加依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
</dependency>

实体类

public class Person{
  @JsonProperty(value = "name")
  private String finalName;
  
  public String getFinalName() {
        return FinalName;
  }

  public void setFinalName(String finalName) {
      FinalName = finalName;
  }
  
  @Override
  public String toString() {
      return "Person{" +
              "FinalName='" + FinalName + '\'' +
              '}';
  }
}

测试类

  • 字符串转对象时,可以使用@JsonProperty规定的字段名
public class Test{
  public static void main(String[] args){
    Person person = new Person();
    person.setFinalName("张三");
    try{
      System.out.println(new ObjectMapper().writeValueAsString(person));
    } catch (JsonProcessingException e){
      e.printStackTrace();
    }
    
    String str = "{\"name\":\"张三\"}";
    try{
      System.out.println(new ObjectMapper().readValue(str, Person.class).toString());
    } catch (IOException e){
      e.printStackTrace();
    }
  }
}
image-20211118113350062

标签:JsonProperty,实体类,String,区别,class,finalName,Person,JsonField,public
来源: https://www.cnblogs.com/jtxw/p/15571660.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有