FastJson的基本使用

FastJson的基本使用

一、导入FastJson的依赖

<!-- 当前最新版 -->
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.73</version>
</dependency>

二、主要类简介

  1. JSON(主要工具类)
  2. JSONObject(JSON的子类,Map结构,将json转换成了Map(key-value)存储)
  3. JSONArray(JSON的子类,LIst结构,将json数组换成了Objectc对象集合存储)

三、测试基本类

// 省略了构造方法和getter/setter方法
public class Person {
    private String name;
    private Integer age;
    private Dog dog;
}

public class Dog {
    private String name;
    private Integer age;
}

四、常用方法

主要分成两大类,第一类是将对象转换成其他数据格式(字符串,字节数组,对象,流等),第二类就是相反的作用,将其他类型数据(字符串,字符/字节数组,流等)转换成对象(指定对象,JSONObject等)

  1. 将对象转换成JSON字符串
Person person = new Person("person",new Dog("dog",1));
//默认会将空属性剔除
JSON.toJSONString(person);

输出结果为	{"dog":{"age":1,"name":"dog"},"name":"person"}

还有其他参数,例如序列化器等,很少用到,用到再记录

  1. 将json字符串转换成指定对象
字符串没有的属性也为空
String per = "{\"dog\":{\"age\":1,\"name\":\"dog\"},\"name\":\"test\",\"age\":null}";

JSON.parseObject(per, Person.class);
  1. 将json字符串转换成JSONObject对象(其实就是一个Map)
String per = "{\"dog\":{\"age\":1,\"name\":\"dog\"},\"name\":\"test\",\"age\":null}";

JSONObject map = JSON.parseObject(per);

// 输出结果为 test
System.out.println(map.get("name"));
// 输出结果为字符串类型 结果为 {"name":"dog","age":1}
System.out.println(map.get("dog"));
  • 可用于在其基础上追加一些属性,再将其转成json字符串,扩充json字符串
  • 可用于判断json中是否包含/剔除某个key或者value,并进行修改
    (map有的方法JSONObject都有)
// 扩充json的属性
map.put("address","SH");
// 再将其转成json字符串
map.toJSONString();

// 是否包含 name 的key 返回boolean
map.containsKey("name");
// 是否包含 1 这个 value
map.containsValue("1");
// 剔除某个key-value
map.remove("name");
  1. 将对象集合转换成字符串
List<Person> list = Lists.newArrayList();
// 追加元素
...

// 输出结果为一个JSON数组字符串
JSON.toJSONString(list);
  1. 将json数组字符串转换成指定对象集合
String s = "[{\"dog\":{\"age\":11,\"name\":\"dog1\"},\"name\":\"zhangsan1\"},{\"dog\":{\"age\":12,\"name\":\"dog2\"},\"name\":\"zhangsan2\"},{\"dog\":{\"age\":13,\"name\":\"dog3\"},\"name\":\"zhangsan3\"},{\"dog\":{\"age\":14,\"name\":\"dog4\"},\"name\":\"zhangsan4\"}]";

List<Person> people = JSON.parseArray(s, Person.class);
  • 还可以转换成其他类型的集合
//将json转换成Set
Set set = JSON.parseObject(json,new TypeReference<HASHSET>(){});
// 将类型转换的 TypeReference 的范型修改成其他的即可
  1. 将json数组字符串转换成JSONArray对象
String s = "[{\"dog\":{\"age\":11,\"name\":\"dog1\"},\"name\":\"zhangsan1\"},{\"dog\":{\"age\":12,\"name\":\"dog2\"},\"name\":\"zhangsan2\"},{\"dog\":{\"age\":13,\"name\":\"dog3\"},\"name\":\"zhangsan3\"},{\"dog\":{\"age\":14,\"name\":\"dog4\"},\"name\":\"zhangsan4\"}]";

// 集合
JSONArray arr = JSON.parseArray(s);
Object o = objects1.get(0);
// 输出结果为 {"name":"zhangsan1","dog":{"name":"dog1","age":11}} 字符串
  1. 日期类型转换成指定格式
Date date = new Date();
String json = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fastjson是一个Java语言编写的高性能JSON处理库,可以实现JSON字符串与Java对象之间的相互转换。下面是一个简单的示例,演示了如何使用Fastjson进行JSON的序列化和反序列化: 1. 导入Fastjson的依赖包到你的项目中。你可以在Maven或Gradle配置文件中添加以下依赖: ```xml <!-- Maven --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.78</version> </dependency> // Gradle implementation 'com.alibaba:fastjson:1.2.78' ``` 2. 创建一个Java对象,例如: ```java public class Person { private String name; private int age; // getters and setters } ``` 3. 将Java对象转换为JSON字符串: ```java import com.alibaba.fastjson.JSON; Person person = new Person(); person.setName("John"); person.setAge(25); String jsonString = JSON.toJSONString(person); System.out.println(jsonString); ``` 这将输出以下JSON字符串: ```json {"age":25,"name":"John"} ``` 4. 将JSON字符串转换为Java对象: ```java String jsonString = "{\"name\":\"John\",\"age\":25}"; Person person = JSON.parseObject(jsonString, Person.class); System.out.println(person.getName()); System.out.println(person.getAge()); ``` 这将输出: ``` John 25 ``` 这只是Fastjson基本用法示例,你还可以使用Fastjson进行更复杂的JSON处理操作,例如处理嵌套对象、数组等。你可以参考Fastjson的官方文档(https://github.com/alibaba/fastjson/wiki/Quick-Start)了解更多用法和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值