Fastjson第一个示例分享

书欣 fastjson 发布时间:2022-07-23 17:08:36 阅读数:7072 1
下文笔者从一个fastjson示例,讲述fastjson的使用简介说明,如下所示
首先请创建一个maven项目,然后引入相应的坐标信息

引入maven依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.1</version>
</dependency>
例:
Java对象转换为JSON 格式
定义一个实体类
public class User {
     
    @JSONField(name = "AGE")
    private int age;
 
    @JSONField(name = "FULL NAME")
    private String fullName;
 
    @JSONField(name = "DATE OF BIRTH")
    private Date dateOfBirth;
 
    public User(int age, String fullName, Date dateOfBirth) {
        super();
        this.age = age;
        this.fullName= fullName;
        this.dateOfBirth = dateOfBirth;
    }
 
    // 标准 getters & setters
}
测试代码:使用JSON.toJSONString即可输出json字符串
private list<User> listOfUsers = new ArrayList<User>();
 
@Before
public void initData() {
    listOfUsers.add(new User(8, "java265.com", new Date()));
    listOfUsers.add(new User(18, "maoxiao", new Date()));
}
 
@Test
public void testJsonConvert() {
    String jsonOutput= JSON.toJSONString(listOfUsers);
}


----运行以上代码,将输出以下信息------
[  
    {  
        "AGE":8,
        "DATE OF BIRTH":1658566486,
        "FULL NAME":"java265.com"
    },
    {  
        "AGE":18,
        "DATE OF BIRTH":1658566486,
        "FULL NAME":"maoxiao"
    }
]

使用JSONField字段属性设置输出格式

@JSONField(name="AGE", serialize=false)
private int age;
 
@JSONField(name="LAST NAME", ordinal = 2)
private String lastName;
 
@JSONField(name="FIRST NAME", ordinal = 1)
private String firstName;
 
@JSONField(name="DATE OF BIRTH", format="dd/MM/yyyy", ordinal = 3)
private Date dateOfBirth;

ordinal:指定json字段的顺序
formate:指定转入和转出的格式信息
[
    {
        "FIRST NAME":"mao",
        "LAST NAME":"xiao",
        "DATE OF BIRTH":"23/7/2022"
    },
    {
        "FIRST NAME":"zhang",
        "LAST NAME":"xiaoqin",
        "DATE OF BIRTH":"23/7/2022"
    }
]

@JSONField


@JSONField的功能
当属性私有时,需使用set方法,否则无法反序列化

JSONField 配置在方法上的示例

 配置在 getter/setter 上

public class A {
      private int id;
 
      @JSONField(name="ID")
      public int getId() {return id;}
      @JSONField(name="ID")
      public void setId(int value) {this.id = id;}
}

配置在 field 上 
public class A {
      @JSONField(name="ID")
      private int id;
 
      public int getId() {return id;}
      public void setId(int value) {this.id = id;}
 }

使用format配置日期格式化
public class A {
      // 配置date序列化和反序列使用yyyyMMdd日期格式
      @JSONField(format="yyyyMMdd")
      public Date date;
 }

使用 serialize/deserialize 指定字段不序列化
public class A {
      @JSONField(serialize=false)
      public Date date;
 }

 public class A {
      @JSONField(deserialize=false)
      public Date date;
 }

使用 ordinal 指定字段的顺序
    默认fastjson 序列化一个 java bean
   根据fieldName的字母序进行序列化的
  我们可使用ordinal指定字段的顺序 
public static class VO {
    @JSONField(ordinal = 3)
    private int a0;

    @JSONField(ordinal = 2)
    private int a1;

    @JSONField(ordinal = 1)
    private int a2;
}

创建JSON 对象

我们可以使用fastjson创建json对象,具体的实现方法
我们只需使用JSONObject或JSONArray对象即可生成JSON对象
  如:
    JSONObject可将map生成为JSON对象
	JSONArray可将List<Object>生成为一个JSONObject对象的集合
@Test
public void generationJSONObject() throws ParseException {
    JSONArray jsonArray = new JSONArray();
    for (int i = 0; i < 2; i++) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("AGE", 10);
        jsonObject.put("FULL NAME", "Doe " + i);
        jsonObject.put("DATE OF BIRTH", "2016/12/12 12:12:12");
        jsonArray.add(jsonObject);
    }
    String jsonOutput = jsonArray.toJSONString();
}

JSON字符串转换为Java对象

下文笔者将使用示例的方式讲述字符串转换为Java对象的方法爱分享
字符串转Java对象注意事项:
      对象需有无参构造函数,否则会报异常
      com.alibaba.fastjson.JSONException: default constructor not found.
例:
@Test
public void stringToObject() {
    User User = new User(18, "mao", "er", new Date());
    String jsonObject = JSON.toJSONString(User);
    User newUser = JSON.parseObject(jsonObject, User.class);
     
    assertEquals(newUser.getAge(), 0); // 如果我们设置系列化为 false 
}
版权声明

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

本文链接: https://www.Java265.com/fastjson/2022/4031.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

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

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者