Fastjson第一个示例分享
下文笔者从一个fastjson示例,讲述fastjson的使用简介说明,如下所示
首先请创建一个maven项目,然后引入相应的坐标信息
Java对象转换为JSON 格式
定义一个实体类
首先请创建一个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 }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。