JSON的轉換,在Java和JavaScript中
阿新 • • 發佈:2022-04-17
JSON
JSON 簡介
JSON(JavaScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。
在javaScrip 一切皆為物件,任何js支援的型別,都可以用JSON來表示
JSON 格式
-
都以鍵值對的形式表示, 即 key: value
-
物件都用 {} 形式為:
{"屬性1":屬性1的值,"屬性2":屬性2的值,"屬性3":屬性3的值}
-
陣列(即使包含了多個物件)都用 [] , 形式為:
[{"物件1的屬性1":物件1的屬性1的值,"物件1的屬性2":物件1的屬性2的值},{"物件2的屬性1":物件2的屬性1的值,"物件2的屬性2":物件2的屬性2的值}]
JSON 轉換
在JavaScript中:
// 假如定義了一個物件 let user = { name:'mm', sex : '女' ,age : 19 }; /* JSON轉換成字串 */ JSON.stringify(user); //返回一個字串,內容為: {"name":"mm" ,"age":"20","sex":"女"} /* 字串轉換成JSON */ let user_text = '{"name":"mm" ,"age":"20","sex":"女"}'; JSON.parse(user2_text); //返回一個物件
在Java中:
Java中並沒有內建JSON的解析,因此使用JSON需要藉助第三方類庫。
下面是幾個常用的 JSON 解析類庫:
注:本文以阿里的 FastJson
為例說明
依賴匯入
<!--FastJson的Maven依賴--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
流程說明:
java變數 <--> JSON物件 <--> 字串
將java變數轉換為JSON
public void testJson() {
JSONObject object = new JSONObject();
//string
object.put("string","string");
//int
object.put("int",2);
//boolean
object.put("boolean",true);
//array
List<Integer> integers = Arrays.asList(1,2,3);
object.put("list",integers);
//null
object.put("null",null);
System.out.println(object);
//列印結果: {"boolean":true,"string":"string","list":[1,2,3],"int":2}
}
將JSON轉換為java變數
public void testJson2() {
JSONObject object = JSONObject
.parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}");
//string
String s = object.getString("string");
System.out.println(s);
//int
int i = object.getIntValue("int");
System.out.println(i);
//boolean
boolean b = object.getBooleanValue("boolean");
System.out.println(b);
//list
List<Integer> integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class);
integers.forEach(System.out::println);
//null
System.out.println(object.getString("null"));
}
/* 列印結果:
string
2
true
1
2
3
null
*/
方法使用
方法 | 作用 |
---|---|
JSON.parseObject(String) |
將字串解析為 JSON 物件 |
JSON.parseArray(String) |
將從字串解析為 JSON 陣列 |
JSON.toJSONString(obj/array) |
將 JSON 物件或 JSON 陣列轉化為字串 |
例項:
//將字串解析為JSON物件
JSONObject obj = JSON.parseObject("{\"runoob\":\"菜鳥教程\"}");
//從字串解析為JSON陣列
JSONArray arr = JSON.parseArray("[\"菜鳥教程\",\"RUNOOB\"]\n");
//將JSON物件轉化為字串
String objStr = JSON.toJSONString(obj);
//將JSON陣列轉化為字串
String arrStr = JSON.toJSONString(arr);