JSON筆記,用於資料交換
目錄
-
JSON的定義
-
JSON由鍵值對組成,並且由花括號({})包圍。
-
每個鍵由引號引起來,鍵和值之間使用冒號進行分隔,多組鍵值對之間使用逗號分隔
-
下面分別是int、字串、布林型別、陣列、集合、JSON陣列在JSON中的定義
-
var jsonObj = {
"key1" : 12,
"key2" : "abc",
"key3" : true,
"key4" : [11, "arr", false],
"key5" : {
"key5_1" : 551,
"key5_2" : "key5_2_value"
},
"key6" : [{
"key6_1_1" : 6611,
"key6_6_2" : "key6_1_2_value"
},{
"key6_2_1" : 6621,
"key6_2_2" : "key6_2_2_value"
}]
};
-
JSON的訪問
-
JSON本身是一個物件
-
JSON中的key可以理解為是物件中的一個屬性
-
JSON中的key訪問就跟訪問物件的屬性一樣:json物件.key
-
alert(jsonObj.key1); // 12
alert(jsonObj.key2); // abc
alert(jsonObj.key3); // true
alert(jsonObj.key4); // 11,arr,false
alert(jsonObj.key5); // [object Object]
alert(jsonObj.key6); // [object Object],[object Object]
// 遍歷陣列
for (var i = 0; i < jsonObj.key4.length; i++) {
alert(jsonObj.key4[i]); // 11;arr;false
}
// 訪問集合中的元素
alert(jsonObj.key5.key5_1); // 551
// 訪問JSON中的JSON
var jsonItem = jsonObj.key6[0]; // 先取出JSON中JSON陣列的第一個元素(JSON型別的)
alert( jsonItem.key6_1_1 ); // 再輸出 6611
-
JSON的兩種存在形式
-
形式1:以物件的形式存在,稱之為json物件
-
形式2:以字串的形式存在,稱之為json字串
-
使用何種形式:
-
一般我們要操作JSON中的資料的時候,需要JSON物件的格式
-
一般我們要在客戶端和伺服器之間進行資料交換的時候,使用JSON字串
-
-
-
JSON兩個常用方法
-
JSON.stringify( json物件 )
-
把json物件轉化為json字串
-
-
JSON.parse( json字串 )
-
把json字串轉化為json物件
-
-
// 將json物件轉換為json字串
var jsonObjString = JSON.stringify(jsonObj);
// 把json字串轉換為json物件
var jsonObj2 = JSON.parse(jsonObjString);
-
JSON在Java中的使用
-
需要gson-2.2.4.jar(谷歌提供)或者其他jar包
-
兩個方法
-
toJson()方法:可以把Java物件轉換為json字串
-
fromJson()方法:可以把json字串轉變為Java物件
-
-
三種情況
-
javaBean和JSON的互轉
-
List和JSON的互轉
-
Map和JSON的互轉
-
-
程式碼展示
-
javaBean和JSON的互轉
-
-
// 1、javaBean和JSON的互轉
@Test
public void test1(){
// 建立一個Java物件
Person person = new Person(1, "凌晨一點半");
// 建立Gson物件例項
Gson gson = new Gson();
// 轉-->:toJson()方法可以把Java物件轉換為json字串
String persinJsonString = gson.toJson(person);
// 轉<--:fromJson()方法可以把json字串轉變為Java物件
// 引數1:json字串; 引數2:轉換回去的Java物件的型別(需要.class)
Person person1 = gson.fromJson(persinJsonString, Person.class);
}
-
List和JSON的互轉
// 2、List和JSON的互轉
@Test
public void test2() {
// 建立一個List
List<Person> personList = new ArrayList<>();
personList.add(new Person(1, "凌晨一點四十四"));
personList.add(new Person(2, "凌晨一點四十五"));
// 建立Gson物件
Gson gson = new Gson();
// 轉-->:把List轉換為json字串
String personListJsonString = gson.toJson(personList);
// 轉<--:把json字串轉換為List
// List list = gson.fromJson(personListJsonString, personList.getClass());// 這樣轉會失敗,所得到的不是List
// 寫一個類繼承TypeToken類,第二個引數建立一個該類的物件,再呼叫getType()轉換型別
// List list = gson.fromJson(personListJsonString, new PersonListType().getType());
// 使用匿名類可以不用寫一個類來繼承TypeToken類
List<Person> list = gson.fromJson(personListJsonString, new TypeToken<List<Person>>(){}.getType());
}
public class PersonListType extends TypeToken<ArrayList<Person>> {
// 需要指定泛型,泛型的型別就是json字串轉換為List時的型別
// 什麼都不用幹,只需要設定好泛型型別就可以了
}
-
Map和JSON的互轉
// 3、Map和JSON的互轉
@Test
public void test3(){
// 建立一個Map
Map<Integer, Person> personMap = new HashMap<>();
personMap.put(1, new Person(1, "凌晨2點整"));
personMap.put(2, new Person(2, "凌晨2點零一分"));
// 建立一個Gsom例項
Gson gson = new Gson();
// 轉-->:map轉換為json字串
String personMapJsonString = gson.toJson(personMap);
// 轉<--:json字串轉換為map
// 寫一個類繼承TypeToken類,第二個引數建立一個該類的物件,再呼叫getType()轉換型別
// Map<Integer, Person> map = gson.fromJson(personMapJsonString, new PersonMapType().getType());
public class PersonMapType extends TypeToken<HashMap<Integer, Person>> {
// 需要指定泛型,泛型的型別就是json字串轉換為Map時的型別
// 什麼都不用幹,只需要設定好泛型型別就可以了
}
-
使用匿名內部類省掉TypeToken類的繼承類
-
// 使用匿名內部類可以不用寫類來繼承TypeToken類 Map<Integer, Person> map = gson.fromJson(personMapJsonString, new TypeToken<HashMap<Integer,Person>>(){}.getType()); }
相關文章
- 週六筆記:用json存python的資料筆記JSONPython
- 用 Json 來實現 PHP 與 JavaScript 間資料交換JSONPHPJavaScript
- JSON資料交換格式有幾種?JSON
- 在.NET使用JSON作為資料交換格式JSON
- Swift學習筆記(2)網路資料交換格式(XML,JSON)解析 [iOS實戰 入門與提高卷]Swift筆記XMLJSONiOS
- JSON筆記JSON筆記
- JSON 筆記JSON筆記
- 【太極創客esp8266自學筆記】資料交換格式:JOSN筆記
- 交換資料
- 《用資料講故事》讀書筆記筆記
- Ajax&Json筆記JSON筆記
- 資料結構筆記-棧的應用資料結構筆記
- AIX培訓筆記——交換空間AI筆記
- NTFS的交換資料流ADS應用
- 【筆記】關於大資料的一些想法筆記大資料
- 大型資料庫應用——一些筆記資料庫筆記
- 數倉的兩種輕量級資料交換格式:json與jsonbJSON
- 資料互動筆記筆記
- 資料泵用法筆記筆記
- 6,修改資料(筆記)筆記
- 資料結構筆記資料結構筆記
- Json-path學習筆記JSON筆記
- 【虹科乾貨】關於JSON資料庫JSON資料庫
- 資料交換格式:Protocol BufferProtocol
- python-資料交換Python
- JSON資料JSON
- 關於SQL資料庫一些簡單的筆記SQL資料庫筆記
- 使用labelme標記自己的資料jsonJSON
- 【Pandas學習筆記02】處理資料實用操作筆記
- docker學習筆記(4)- 應用資料管理(容器外)Docker筆記
- 《資料密集型應用系統設計》筆記筆記
- JMeter中對於Json資料的處理方法JMeterJSON
- delphi基於資料模型(data-model)JSON序列模型JSON
- 小程式——app.json配置筆記APPJSON筆記
- MySQL資料型別筆記MySql資料型別筆記
- Docker筆記(八):資料管理Docker筆記
- 大資料開發筆記大資料筆記
- laravel筆記+資料庫操作Laravel筆記資料庫