Java FastJson使用教程
Fastjson 是一個(gè) Java 庫(kù),可以將 Java 對(duì)象轉(zhuǎn)換為 JSON 格式,當(dāng)然它也可以將 JSON 字符串轉(zhuǎn)換為 Java 對(duì)象。
Fastjson 可以操作任何 Java 對(duì)象,即使是一些預(yù)先存在的沒(méi)有源碼的對(duì)象。
Fastjson 源碼地址:https://github.com/alibaba/fastjson
Fastjson 擴(kuò)展閱讀:https://www.w3cschool.cn/fastjson/
一、Fastjson 特性
- 提供服務(wù)器端、安卓客戶端兩種解析工具,性能表現(xiàn)較好。
- 提供了 toJSONString() 和 parseObject() 方法來(lái)將 Java 對(duì)象與 JSON 相互轉(zhuǎn)換。調(diào)用toJSONString方 法即可將對(duì)象轉(zhuǎn)換成 JSON 字符串,parseObject 方法則反過(guò)來(lái)將 JSON 字符串轉(zhuǎn)換成對(duì)象。
- 允許轉(zhuǎn)換預(yù)先存在的無(wú)法修改的對(duì)象(只有class、無(wú)源代碼)。
- Java泛型的廣泛支持。
- 允許對(duì)象的自定義表示、允許自定義序列化類。
- 支持任意復(fù)雜對(duì)象(具有深厚的繼承層次和廣泛使用的泛型類型)。
二、FastJson 使用(配置 maven 依賴)
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>x.x.x</version> </dependency>
其中 x.x.x 是版本號(hào),根據(jù)需要使用特定版本,建議使用最新版本。
三、創(chuàng)建 JSON 對(duì)象
創(chuàng)建 JSON 對(duì)象非常簡(jiǎn)單,只需使用 JSONObject(fastJson提供的json對(duì)象) 和 JSONArray(fastJson提供json數(shù)組對(duì)象) 對(duì)象即可。
我們可以把JSONObject 當(dāng)成一個(gè) Map<String,Object> 來(lái)看,只是 JSONObject 提供了更為豐富便捷的方法,方便我們對(duì)于對(duì)象屬性的操作。我們看一下源碼。
同樣我們可以把 JSONArray 當(dāng)做一個(gè) List<Object>,可以把 JSONArray 看成 JSONObject 對(duì)象的一個(gè)集合。
此外,由于 JSONObject 和 JSONArray 繼承了 JSON,所以說(shuō)也可以直接使用兩者對(duì) JSON 格式字符串與 JSON 對(duì)象及 javaBean 之間做轉(zhuǎn)換,不過(guò)為了避免混淆我們還是使用 JSON。
@Test public void whenGenerateJson_thanGenerationCorrect() 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 字符串轉(zhuǎn)換為 Java 對(duì)象
現(xiàn)在我們已經(jīng)學(xué)會(huì)了如何創(chuàng)建 JSON 對(duì)象,以及如何將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串,接下來(lái)我們就需要了解如何解析 JSON
@Test public void whenJson_thanConvertToObjectCorrect() { Person person = new Person(20, "John", "Doe", new Date()); String jsonObject = JSON.toJSONString(person); Person newPerson = JSON.parseObject(jsonObject, Person.class); assertEquals(newPerson.getAge(), 0); // 如果我們?cè)O(shè)置系列化為 false assertEquals(newPerson.getFullName(), listOfPersons.get(0).getFullName()); }
五、fastjson 常用 API
fastjson API 入口類是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON類上的靜態(tài)方法直接完成。
public static final Object parse(String text); // 把JSON文本parse為JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse為JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文本 public static final Object toJSON(Object javaObject); //將JavaBean轉(zhuǎn)換為JSONObject或者JSONArray。
六、JSONField與JSONType注解的使用
fastjson提供了JSONField對(duì)序列化與反序列化進(jìn)行定制,比如可以指定字段的名稱,序列化的順序。
其中serializeUsing與deserializeUsing可以用于對(duì)字段的序列化與反序列化進(jìn)行定制化。
以上就是Java FastJson使用教程的詳細(xì)內(nèi)容,更多關(guān)于Java FastJson的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實(shí)現(xiàn)簡(jiǎn)單的RPC框架的示例代碼
本篇文章主要介紹了Java實(shí)現(xiàn)簡(jiǎn)單的RPC框架的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11ElasticSearch學(xué)習(xí)之Es集群Api操作示例
這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之Es集群Api操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Java實(shí)現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法詳解
這篇文章主要介紹了Java實(shí)現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了java數(shù)組去除重復(fù)的幾種常用方法、實(shí)現(xiàn)原理與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-09-09詳解Java8的forEach(...)如何提供index值
這篇文章主要介紹了詳解Java8的forEach(...)如何提供index值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03