前言
项目上最近要升级fastjson2,记录下使用过程
添加依赖
在fastjson v2
中,groupId
和1.x
不一样,是com.alibaba.fastjson2
:
Maven
:
1 2 3 4 5
| <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.15</version> </dependency>
|
Gradle
:
1 2 3
| dependencies { implementation 'com.alibaba.fastjson2:fastjson2:2.0.15' }
|
版本号写该文章时是最新版本,实际使用时请查看最新版本,避免旧版本又漏洞,最新版本
Fastjson v1
兼容模块
如果原来使用fastjson 1.2.x
版本,可以使用兼容包,兼容包不能保证100%兼容,请仔细测试验证,发现问题请及时反馈。
Maven
:
1 2 3 4 5
| <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.15</version> </dependency>
|
Gradle
:
1 2 3
| dependencies { implementation 'com.alibaba:fastjson:2.0.15' }
|
Fastjson Kotlin
集成模块
如果项目使用Kotlin
,可以使用fastjson-kotlin
模块,使用方式上采用kotlin
的特性。
Maven
:
1 2 3 4 5
| <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2-kotlin</artifactId> <version>2.0.15</version> </dependency>
|
Kotlin Gradle
:
1 2 3
| dependencies { implementation("com.alibaba.fastjson2:fastjson2-kotlin:2.0.15") }
|
Fastjson Extension
扩展模块
如果项目使用SpringFramework
等框架,可以使用fastjson-extension
模块,使用方式参考 SpringFramework Support。
Maven
:
1 2 3 4 5
| <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2-extension</artifactId> <version>2.0.15</version> </dependency>
|
Gradle
:
1 2 3
| dependencies { implementation 'com.alibaba.fastjson2:fastjson2-extension:2.0.15' }
|
简单使用
在fastjson v2
中,package
和1.x
不一样,是com.alibaba.fastjson2
。如果你之前用的是fastjson1
,大多数情况直接更包名就即可。
将JSON
解析为JSONObject
Java
:
1 2 3 4 5
| String text = "..."; JSONObject data = JSON.parseObject(text);
byte[] bytes = ...; JSONObject data = JSON.parseObject(bytes);
|
Kotlin
:
1 2 3 4 5 6 7
| import com.alibaba.fastjson2.*
val text = ... val data = text.parseObject()
val bytes = ... val data = bytes.parseObject()
|
将JSON
解析为JSONArray
Java
:
1 2
| String text = "..."; JSONArray data = JSON.parseArray(text);
|
Kotlin
:
1 2 3 4
| import com.alibaba.fastjson2.*
val text = ... // String val data = text.parseArray() // JSONArray
|
将JSON
解析为Java
对象
Java
:
1 2
| String text = "..."; User data = JSON.parseObject(text, User.class);
|
Kotlin
:
1 2 3 4 5
| import com.alibaba.fastjson2.*
val text = ... // String val data = text.to<User>() // User val data = text.parseObject<User>() // User
|
将Java
对象序列化为JSON
Java
:
1 2 3
| Object data = "..."; String text = JSON.toJSONString(data); byte[] text = JSON.toJSONBytes(data);
|
Kotlin
:
1 2 3 4 5
| import com.alibaba.fastjson2.*
val data = ... // Any val text = text.toJSONString() // String val bytes = text.toJSONByteArray() // ByteArray
|
使用JSONObject
、JSONArray
获取简单属性
1 2 3 4 5 6 7 8 9 10
| String text = "{\"id\": 2,\"name\": \"fastjson2\"}"; JSONObject obj = JSON.parseObject(text);
int id = obj.getIntValue("id"); String name = obj.getString("name"); String text = "[2, \"fastjson2\"]"; JSONArray array = JSON.parseArray(text);
int id = array.getIntValue(0); String name = array.getString(1);
|
读取JavaBean
Java
:
1 2 3 4 5
| JSONArray array = ... JSONObject obj = ...
User user = array.getObject(0, User.class); User user = obj.getObject("key", User.class);
|
Kotlin
:
1 2 3 4 5
| val array = ... // JSONArray val obj = ... // JSONObject
val user = array.to<User>(0) val user = obj.to<User>("key")
|
转为JavaBean
Java
:
1 2 3 4 5
| JSONArray array = ... JSONObject obj = ...
User user = obj.toJavaObject(User.class); List<User> users = array.toJavaList(User.class);
|
Kotlin
:
1 2 3 4 5
| val array = ... // JSONArray val obj = ... // JSONObject
val user = obj.to<User>() // User val users = array.toList<User>() // List<User>
|
将JavaBean
对象序列化为JSON
Java
:
1 2 3 4 5 6 7 8 9 10 11
| class User { public int id; public String name; }
User user = new User(); user.id = 2; user.name = "FastJson2";
String text = JSON.toJSONString(user); byte[] bytes = JSON.toJSONBytes(user);
|
Kotlin
:
1 2 3 4 5 6 7 8 9 10 11
| class User( var id: Int, var name: String )
val user = User() user.id = 2 user.name = "FastJson2"
val text = user.toJSONString() // String val bytes = user.toJSONByteArray() // ByteArray
|
序列化结果:
1 2 3 4
| { "id" : 2, "name" : "FastJson2" }
|
以上内容部分摘自fastjson官方README