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資料交換格式有幾種?JSON
- 用 Json 來實現 PHP 與 JavaScript 間資料交換JSONPHPJavaScript
- 在.NET使用JSON作為資料交換格式JSON
- 週六筆記:用json存python的資料筆記JSONPython
- NTFS的交換資料流ADS應用
- 【太極創客esp8266自學筆記】資料交換格式:JOSN筆記
- python-資料交換Python
- 數倉的兩種輕量級資料交換格式:json與jsonbJSON
- 資料集轉換JSONJSON
- MysqlsqoopHDFS 資料交換實驗MySqlOOP
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- JSON筆記JSON筆記
- 如何使用 Protobuf 做資料交換
- JS字串轉換為JSON的四種方法筆記字串JSON筆記
- 資料的交換輸出 hd 2016
- 前後端資料交換互動後端
- Python多程式之資料交換PipePython
- python--進位制轉換和資料交換Python
- flask非同步資料交換celery的使用Flask非同步
- 交換兩個資料的三種方法
- 內外網資料交換方式有哪些?
- 原始碼分析:Exchanger之資料交換器原始碼
- Ajax&Json筆記JSON筆記
- 全國產交換機、軍用交換機與普通交換機到底有啥區別?
- 從Exchager資料交換到基於trade-off的系統設計
- Ubuntu 啟用交換分割槽Ubuntu
- 計算機網路中的資料交換計算機網路
- 交換機是如何轉發資料包的?
- 資料共享交換平臺的實踐分享
- SeaTunnel用於海量資料的同步和轉換
- 用兩種方法把JSON資料格式轉換為Python的類物件JSONPython物件
- Bond——大資料時代的資料交換和儲存格式大資料
- 資料結構筆記-棧的應用資料結構筆記
- RestCloud ETL資料交換平臺,支援分散式部署RESTCloud分散式
- 流批一體資料交換引擎 etl-engine
- Python JSON 使用指南:解析和轉換資料PythonJSON
- 為啥我的字典資料轉換不成 json?JSON
- 1.1_3_1 電路交換、報文交換、分組交換