阿裡Fastjson
文章目錄
- 阿裡Fastjson
-
- 1 JSON簡介
- 2 阿裡fastjson使用
-
- 2.1 在maven項目中導入相關依賴
- 2.2 建立JSONObject對象添加資料
- 2.3 JSON格式的字元串與JSONObject對象互相轉換
- 2.4 根據鍵擷取值
- 2.4 周遊JSONArray數組
- 3 封裝傳回值工具類
1 JSON簡介
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。百度百科
json資料一般格式:
{
"key1":value1,
"key2":value2,
"key3":value3,
...
}
json嵌套格式:
{
"key1":{
"key11":value,
"keyi12":value,
...
},
"key2":{
"key21":value,
"key22":{
"key221":value
},
...
},
...
}
json數組格式:
{
"key1":[1,2,3],
"key2":[{"name":"劉備"},{"name":"關羽"},{"name":"張飛"}]
}
2 阿裡fastjson使用
2.1 在maven項目中導入相關依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2.2 建立JSONObject對象添加資料
構造方法:
-
public JSONObject()
-
public JSONObject(Map<String, Object> map)
成員方法:
-
public Object put(String key, Object value)
-
public void putAll(Map<? extends String, ? extends Object> m)
執行個體:
Map<String, Object> map = new HashMap<>();
map.put("profession", "學生");
map.put("qq", "76**55");
JSONObject json1 = new JSONObject();
json1.put("name", "Jacks");
json1.put("age", 22);
json1.putAll(map);
System.out.println("json1:" + json1);
JSONObject json2 = new JSONObject(map);
json2.put("name", "Jacks");
json2.put("age", 22);
System.out.println("json2:" + json2);
運作結果:
json1:{"profession":"學生","qq":"76**55","name":"Jacks","age":22}
json2:{"profession":"學生","qq":"76**55","name":"Jacks","age":22}
注意:
-
的結構和Map
結構相似,都是以JSON
的方式存儲,是以可以直接将K-V
作為參數構造Map
對象,JSON
的Map
和key
會分别轉換成value
的JSON
和key
。value
-
集合和Map
對象的鍵都是唯一的,若重複添加同一個鍵的值,前面的值會被後面的值覆寫。JSON
2.3 JSON格式的字元串與JSONObject對象互相轉換
成員方法:
-
轉String
:JSONObject對象
public static JSONObject parseObject(String text)
-
對象轉JSONObject
:String
public static String toJSONString(Object object, SerializerFeature... features)
-
是一個枚舉,具體詳情可以參照這篇部落格fastjson中SerializerFeature的用法及中文注解SerializerFeature
執行個體:
String json = "{\"name\":\"Jacks\",\"age\":22}";
//字元串轉json對象
JSONObject jsonObject = JSON.parseObject(json);
//json對象轉字元串
String jsonString = JSON.toJSONString(jsonObject);
System.out.println("字元串json:" + json);
System.out.println("JSONObject對象jsonObject:" + jsonObject);
System.out.println("JSONString:" + jsonString);
運作結果:
字元串json:{"name":"Jacks","age":22}
JSONObject對象jsonObject:{"name":"Jacks","age":22}
JSONString:{"name":"Jacks","age":22}
注意:這裡的列印結果都是一樣的,說明轉換成功。如果字元串不是JSON格式的話,則會抛出異常:
com.alibaba.fastjson.JSONException: error parse new
2.4 根據鍵擷取值
成員方法:
- 根據鍵擷取
類型的值:Object
public Object get(Object key)
- 根據鍵擷取
類型的值:JSONObject
public JSONObject getJSONObject(String key)
- 根據鍵擷取
類型的值:String
public String getString(String key)
- 根據鍵擷取
類型的值:Integer
public Integer getInteger(String key)
- …
執行個體:
String json = "{\"name\":\"Jacks\",\"age\":22}";
JSONObject jsonObject = JSON.parseObject(json);
String name = jsonObject.getString("name");
int age = jsonObject.getInteger("age");
System.out.println("姓名:" + name);
System.out.println("年齡:" + age);
運作結果:
姓名:Jacks
年齡:22
2.4 周遊JSONArray數組
使用for循環,執行個體如下:
String jsonString = "[\n" +
" {\"name\":\"劉備\"},\n" +
" {\"name\":\"關羽\"},\n" +
" {\"name\":\"張飛\"},\n" +
" {\"name\":\"趙雲\"},\n" +
" {\"name\":\"馬超\"}\n" +
" {\"name\":\"黃忠\"}\n" +
" {\"name\":\"諸葛亮\"}\n" +
"]";
JSONArray json = JSONArray.parseArray(jsonString);
System.out.println("JSON數組:" + json);
for (int i = 0; i < json.size(); i++) {
JSONObject data = json.getJSONObject(i);
String name = data.getString("name");
System.out.println("姓名:" + name);
}
運作結果:
JSON數組:[{"name":"劉備"},{"name":"關羽"},{"name":"張飛"},{"name":"趙雲"},{"name":"馬超"},{"name":"黃忠"},{"name":"諸葛亮"}]
姓名:劉備
姓名:關羽
姓名:張飛
姓名:趙雲
姓名:馬超
姓名:黃忠
姓名:諸葛亮
3 封裝傳回值工具類
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class ResultJSON {
//僅傳回狀态碼和回報資訊,用于請求出錯的響應。
public static String resultStatus(int code,String msg){
JSONObject json = new JSONObject();
json.put("code",code);
json.put("msg",msg);
return JSON.toJSONString(json, SerializerFeature.WriteMapNullValue, SerializerFeature.DisableCircularReferenceDetect);
}
//傳回狀态碼、回報資訊和資料,用于請求成功的響應。
public static String resultData(int status,String msg,Object data){
JSONObject json = new JSONObject();
json.put("status",status);
json.put("msg",msg);
json.put("data",data);
return JSON.toJSONString(json, SerializerFeature.WriteMapNullValue, SerializerFeature.DisableCircularReferenceDetect);
}
}
說明:以上内容是部落客目前應用到的一些方法,并不全面,僅此記錄學習過程。