json與list,map互轉 ,Json語法
阿新 • • 發佈:2019-02-03
Json
- 定義
- Json語法
- Json使用
- JSON 解析器
- Json與常見的型別之間的轉換
- Json-jar包下載連結
定義
JSON(JavaScript Object Notation, JS 物件標記) 是一種輕量級的資料交換格式。它基於 ECMAScript (w3c制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。
簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。
易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。
Json語法
JSON 語法是 JavaScript 物件表示法 語法的子集。
JSON 語法規則
●資料在名稱/值對中
●資料由逗號分隔
●花括號儲存物件
●方括號儲存陣列
· 資料在名稱/值對中
名稱/值對包括欄位名稱(在雙引號中),
後面寫一個冒號,然後是值:
如:"firstName" : "John"
在javaScript相當於firstName = "John"
JSON 值
JSON 值可以是:
•數字(整數或浮點數)
•字串(在雙引號中)
•邏輯值(true 或 false)
•陣列(在方括號中)
•物件(在花括號中)
•null
JSON 物件
JSON 物件在花括號中書寫:
物件可以包含多個名稱/值對:
{ "firstName":"John" , "lastName":"Doe" }
JSON 陣列
JSON 陣列在方括號中書寫:
陣列可包含多個物件:
{"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" } ] }
物件 "employees" 是包含三個物件的陣列。
每個物件代表一條關於某人(有姓和名)的記錄
JSON 使用 JavaScript 語法
因為 JSON 使用 JavaScript 語法,
所以無需額外的軟體就能處理 JavaScript 中的 JSON。
通過 JavaScript,您可以建立一個物件陣列,並像這樣進行賦值:
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
可以像這樣訪問 JavaScript 物件陣列中的第一項:
employees[0].lastName;
返回的內容是:
Gates
可以像這樣修改資料:
employees[0].lastName = "Jobs";
Json使用
JSON 解析器
提示:eval() 函式可編譯並執行任何 JavaScript 程式碼。這隱藏了一個潛在的安全問題。
使用 JSON 解析器將 JSON 轉換為 JavaScript 物件是更安全的做法。JSON 解析器只能識別 JSON 文字,而不會編譯腳 本。
在瀏覽器中,這提供了原生的 JSON 支援,而且 JSON 解析器的速度更快。
較新的瀏覽器和最新的 ECMAScript (JavaScript) 標準中均包含了原生的對 JSON 的支援。
Json與常見的型別之間的轉換
阿里的fastJson.jar
●list 轉換為Json
List<Person> list = new ArrayList<Person>();
String str = JSON.toJSON(list).toString;
●Json轉換為list
List<User> persons = new ArrayList<User>();
List = JSONObject.parseArray(jasonArray,User.class);
Json與map的相互轉換
Map<String, String> maps = new HashMap<String, String>();
String str = JSON.toJSONString(maps);
●Json轉換為map
Map<String,String> maps = JSON.parseObject(str,Map.class);
Json與陣列相互轉換
●陣列轉json格式字串String[] arr = {"bill","green","maks","jim"};
String jsonText = JSON.toJSONString(arr, true);
●json格式字串轉陣列
String jsonText = "[\"bill\",\"green\",\"maks\",\"jim\"]";
JSONArray jsonArr = JSON.parseArray(jsonText);
谷歌的Gson.jar
●list 轉換為Json
Gson gson = new Gson();
List<User> persons = new ArrayList<User>();
String str = gson.toJson(persons);
●Json轉換為list
Gson gson = new Gson();
List<User> persons = gson.fromJson(str,new TypeToken<List<User>>{}.getType());
JSON-jar包下載連結(alibaba gson):密碼 2mkk