fastjson2中JSON转换

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。它易于阅读和编写,同时也易于机器解析和生成。

在JSON中,数据结构通过键值对的形式表示。键必须是字符串,值可以是字符串、数字、布尔值、null、数组或另一个JSON对象。

使用fastjson2进行相互转换

添加依赖

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

<!-- 或 -->

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.23</version>
</dependency>

创建一个实体类

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Integer id;

    private String name;

    private Integer age;

    private String email;

    private Date birthday;
}

Java对象转换为JSON

public class JsonTest {
    @Test
    public void testObjectToJson() {
        // 创建Java对象
        Student student = Student.builder().id(1).name("张三").age(20).email("zs@sina.com").birthday(new Date()).build();
        System.out.println(student);
        // Student(id=1, name=张三, age=20, email=zs@sina.com, birthday=Thu Dec 21 09:42:27 CST 2023)

        // 将Java对象转换为JSON格式
        String jsonString = JSON.toJSONString(student);
        System.out.println(jsonString);
        // {"age":20,"birthday":"2023-12-21 09:42:27.769","email":"zs@sina.com","id":1,"name":"张三"}
    }
}

JSON 转换为Java对象

public class JsonTest {
    @Test
    public void testJsonToObject() {
        String jsonString = "{\"age\":20,\"birthday\":\"2023-12-21 09:42:27.769\",\"email\":\"zs@sina.com\",\"id\":1,\"name\":\"张三\"}";
        
        // 将JSON格式的对象转换为Java对象
        Student student = JSON.parseObject(jsonString, Student.class);
        System.out.println(student);
        // Student(id=1, name=张三, age=20, email=zs@sina.com, birthday=Thu Dec 21 09:42:27 CST 2023)
    }
}

List集合转JSON字符串 

public class JsonTest {
    @Test
    public void testListToJson() {
        ArrayList<Student> students = new ArrayList<>();
        Student student1 = Student.builder().id(1).name("张三").age(20).email("zs@sina.com").birthday(new Date()).build();
        Student student2 = Student.builder().id(2).name("李四").age(20).email("ls@sina.com").birthday(new Date()).build();
        Student student3 = Student.builder().id(3).name("王五").age(20).email("ww@sina.com").birthday(new Date()).build();

        students.add(student1);
        students.add(student2);
        students.add(student3);

        System.out.println(students);

        String jsonString = JSON.toJSONString(students);
        System.out.println(jsonString);
        /**
         * [
         *      Student(id=1, name=张三, age=20, email=zs@sina.com, birthday=Thu Dec 21 09:49:14 CST 2023), 
         *      Student(id=2, name=李四, age=20, email=ls@sina.com, birthday=Thu Dec 21 09:49:14 CST 2023), 
         *      Student(id=3, name=王五, age=20, email=ww@sina.com, birthday=Thu Dec 21 09:49:14 CST 2023)
         * ]
         * [
         *      {"age":20,"birthday":"2023-12-21 09:49:14.213","email":"zs@sina.com","id":1,"name":"张三"},
         *      {"age":20,"birthday":"2023-12-21 09:49:14.213","email":"ls@sina.com","id":2,"name":"李四"},
         *      {"age":20,"birthday":"2023-12-21 09:49:14.213","email":"ww@sina.com","id":3,"name":"王五"}
         * ]
         */
    }
}

JSON字符串转List集合 

public class JsonTest {
    @Test
    public void testJsonToList() {
        String jsonString = "" +
                "   [" +
                "           {\"age\":20,\"birthday\":\"2023-12-21 09:49:14.213\",\"email\":\"zs@sina.com\",\"id\":1,\"name\":\"张三\"}," +
                "           {\"age\":20,\"birthday\":\"2023-12-21 09:49:14.213\",\"email\":\"ls@sina.com\",\"id\":2,\"name\":\"李四\"}," +
                "           {\"age\":20,\"birthday\":\"2023-12-21 09:49:14.213\",\"email\":\"ww@sina.com\",\"id\":3,\"name\":\"王五\"}" +
                "   ]";

        // JSON类的静态方法 parseArray
        // 传递JSON字符串;转换后的集合的泛型和class对象
        List<Student> studentList = JSON.parseArray(jsonString, Student.class);
        for (Student student : studentList) {
            System.out.println(student);
        }
        /**
         * Student(id=1, name=张三, age=20, email=zs@sina.com, birthday=Thu Dec 21 09:49:14 CST 2023)
         * Student(id=2, name=李四, age=20, email=ls@sina.com, birthday=Thu Dec 21 09:49:14 CST 2023)
         * Student(id=3, name=王五, age=20, email=ww@sina.com, birthday=Thu Dec 21 09:49:14 CST 2023)
         */
    }
}

Map集合转JSON字符串 

public class JsonTest {
    @Test
    public void testMapToJson() {
        HashMap<String, Student> objectObjectHashMap = new HashMap<>();
        Student student1 = Student.builder().id(1).name("张三").age(20).email("zs@sina.com").birthday(new Date()).build();
        Student student2 = Student.builder().id(2).name("李四").age(20).email("ls@sina.com").birthday(new Date()).build();
        Student student3 = Student.builder().id(3).name("王五").age(20).email("ww@sina.com").birthday(new Date()).build();
        objectObjectHashMap.put("student1", student1);
        objectObjectHashMap.put("student2", student2);
        objectObjectHashMap.put("student3", student3);
        System.out.println(objectObjectHashMap);

        System.out.println(JSON.toJSONString(objectObjectHashMap));
        /**
         * {
         *      "student2":{"age":20,"birthday":"2023-12-21 09:56:01.972","email":"ls@sina.com","id":2,"name":"李四"},
         *      "student1":{"age":20,"birthday":"2023-12-21 09:56:01.972","email":"zs@sina.com","id":1,"name":"张三"},
         *      "student3":{"age":20,"birthday":"2023-12-21 09:56:01.972","email":"ww@sina.com","id":3,"name":"王五"}
         * }
         */
    }
}

 JSON字符串转Map集合

public class JsonTest {
    @Test
    public void testJsonToMap() {
        String jsonString = "" +
                "{" +
                "   \"student2\":{\"age\":20,\"birthday\":\"2023-12-21 09:56:51.195\",\"email\":\"ls@sina.com\",\"id\":2,\"name\":\"李四\"}," +
                "   \"student1\":{\"age\":20,\"birthday\":\"2023-12-21 09:56:51.195\",\"email\":\"zs@sina.com\",\"id\":1,\"name\":\"张三\"}," +
                "   \"student3\":{\"age\":20,\"birthday\":\"2023-12-21 09:56:51.195\",\"email\":\"ww@sina.com\",\"id\":3,\"name\":\"王五\"}" +
                "}";
        // JSON类的静态方法 parseObject
        // 直接进行反序列化,Map集合没有泛型的,泛型没有是不安全的集合
        // 转后的集合,必须有泛型
        // 调用parseObject,传递参数,TypeReference类型,在TypeReference类的泛型中,传递转后的Map集合
        Map<String, Student> studentMap = JSON.parseObject(jsonString, new TypeReference<Map<String, Student>>() {
        });
        for (String key : studentMap.keySet()) {
            System.out.println(key + " ———— " + studentMap.get(key));
        }
        /**
         * student2 ———— Student(id=2, name=李四, age=20, email=ls@sina.com, birthday=Thu Dec 21 09:56:51 CST 2023)
         * student1 ———— Student(id=1, name=张三, age=20, email=zs@sina.com, birthday=Thu Dec 21 09:56:51 CST 2023)
         * student3 ———— Student(id=3, name=王五, age=20, email=ww@sina.com, birthday=Thu Dec 21 09:56:51 CST 2023)
         */
    }
}

@JSONField

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    @JSONField(ordinal = 0)
    private Integer id;

    @JSONField(name = "名字", ordinal = 1)
    private String name;

    @JSONField(name = "年龄", ordinal = 2)
    private Integer age;

    @JSONField(name = "邮箱", ordinal = 3)
    private String email;

    @JSONField(name = "出生日期", format = "yyyy-MM-dd HH:mm", ordinal = 4)
    private Date birthday;

    @JSONField(name = "不序列化字段", serialize = false, ordinal = 5)
    private String noParse;
}
  •  @JSONField的name属性,可以指定序列化后的名字
  • @JSONField的ordinal属性,可以指定序列化后的字段顺序
  • @JSONField的serialize属性,可以指定是否序列化该字段
  • @JSONField的format属性,可以指定序列化后的格式
@Test
public void ObjectToJsonTest() throws Exception {
    Student student = Student.builder()
            .id(1).name("张三").age(20).email("zs@sina.com")
            .birthday(new Date()).noParse("序列化了")
            .build();
    // Student(id=1, name=张三, age=20, email=zs@sina.com, birthday=Thu Dec 21 10:06:35 CST 2023, noParse=序列化了)
    System.out.println(student);
    String jsonString = JSON.toJSONString(student);
    // {"age":20,"birthday":"2023-12-21 10:07:27.123","email":"zs@sina.com","id":1,"name":"张三","noParse":"序列化了"}
    // {"age":20,"birthday":"2023-12-21 10:07:56.286","email":"zs@sina.com","id":1,"name":"张三"}
    // {"age":20,"birthday":"2023-12-21 10:08","email":"zs@sina.com","id":1,"name":"张三"}
    // {"id":1,"出生日期":"2023-12-21 10:08","名字":"张三","年龄":20,"邮箱":"zs@sina.com"}
    // {"id":1,"名字":"张三","年龄":20,"邮箱":"zs@sina.com","出生日期":"2023-12-21 10:11"}
    System.out.println(jsonString);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Fastjson 解析 JSON 文件很简单,只需要按照以下步骤操作即可: 1. 导入 Fastjson 的 jar 包 在你的项目导入 Fastjson 的 jar 包,你可以从官网 https://github.com/alibaba/fastjson/releases 下载最新版本的 jar 包。 2. 创建 JSON 对象 使用 FastjsonJSON 类可以创建一个 JSON 对象,可以是一个 JSONObject 或者 JSONArray。 ``` import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class JsonTest { public static void main(String[] args) { // JSON 对象可以是 JSONObject 或者 JSONArray JSONObject json = new JSONObject(); json.put("name", "Tom"); json.put("age", 18); JSONArray jsonArray = new JSONArray(); jsonArray.add("apple"); jsonArray.add("banana"); jsonArray.add("orange"); // 将 JSON 对象转换成字符串 String jsonString = JSON.toJSONString(json); System.out.println(jsonString); // 将 JSON 数组转换成字符串 String jsonArrayString = JSON.toJSONString(jsonArray); System.out.println(jsonArrayString); } } ``` 3. 解析 JSON 对象 使用 FastjsonJSON 类的 parseObject 方法可以将 JSON 字符串解析成一个 Java 对象。 ``` import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class JsonTest { public static void main(String[] args) { String jsonString = "{\"name\":\"Tom\",\"age\":18}"; // 将 JSON 字符串解析成 Java 对象 JSONObject json = JSON.parseObject(jsonString); System.out.println(json.getString("name")); System.out.println(json.getInteger("age")); } } ``` 4. 解析 JSON 数组 使用 FastjsonJSON 类的 parseArray 方法可以将 JSON 数组字符串解析成一个 Java 对象数组。 ``` import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; public class JsonTest { public static void main(String[] args) { String jsonArrayString = "[\"apple\",\"banana\",\"orange\"]"; // 将 JSON 数组字符串解析成 Java 对象数组 JSONArray jsonArray = JSON.parseArray(jsonArrayString); for (Object obj : jsonArray) { System.out.println(obj.toString()); } } } ``` 以上就是使用 Fastjson 解析 JSON 文件的基本操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值