摘要:概述即,是對象表示法的子集。具有以下特點數據放在鍵值對中數據由逗號分隔花括號表示對象方括號表示數組。創建一個對象為對象添加屬性創建數組將對象添加到數組將數組添加到對象將對象轉化成字符串參考文檔官網
JSON概述
JSON即javascript object notation,是javascript對象表示法的子集。具有以下特點:
數據放在鍵值對中;
數據由逗號分隔;
花括號表示對象;
方括號表示數組。
JSON的值可以是:
數字(整數或浮點數)
字符串(在雙引號中)
邏輯值(true或false)
數組(方括號內)
對象(花括號內)
null
JSON的基本語法 JSON對象JSON對象在花括號中書寫,對象可以包含多個鍵值對,例如:
java{
"firstName":"John",
"lastName":"Doe"
}
JSON數組
JSON數組在方括號中書寫,數組中可以包含多個對象,例如:
java{
"employees":[
{"firstName":"John","lastName":"Doe"},
{"firstName":"Anna","lastName":"Smith"},
{"firstName":"Peter","lastName":"Jones"}
]
}
在以上的實例中,根部的花括號表示這是一個JSON對象,該對象的鍵是employees,值是一個JSON數組,在這個數組中有3個JSON對象,每個JSON對象之間也使用逗號分隔。
使用java讀取JSON數據在JSON官網我們可以查看到各個語法對json的支持,對于java來說比較成熟的是google-gson。
其maven依賴如下:
xml
com.google.code.gson
gson
2.2.4
現在編寫程序解析以下的test.json:
json{
"cat":"it",
"languages":[
{"id":1,"ide":"Eclipse","name":"Java"},
{"id":2,"ide":"Xcode","name":"Swift"},
{"id":3,"ide":"Visual Studio","name":"C#"}
],
"pop":true
}
以下的代碼將解析以上的json數據:
javapublic void readJSON() throws Exception{
// 創建json解析器
JsonParser parser = new JsonParser();
// 使用解析器解析json數據,返回值是JsonElement,強制轉化為其子類JsonObject類型
JsonObject object = (JsonObject) parser.parse(new FileReader("test.json"));
// 使用JsonObject的get(String memeberName)方法返回JsonElement,再使用JsonElement的getAsXXX方法得到真實類型
System.out.println("cat = " + object.get("cat").getAsString());
// 遍歷JSON數組
JsonArray languages = object.getAsJsonArray("languages");
for (JsonElement jsonElement : languages) {
JsonObject language = jsonElement.getAsJsonObject();
System.out.println("id = " + language.get("id").getAsInt() + ",ide = " + language.get("ide").getAsString() + ",name = " + language.get("name").getAsString());
}
System.out.println("pop = " + object.get("pop").getAsString());
}
使用java生成JSON數據
生成JSON數據的關鍵是JSON對象中的add和addProperty兩個方法。前者用于向JSON對象中添加數組或者另一個JSON對象,后者用于為JSON對象添加屬性。以下的代碼將生成上面例子中的test.json。
javapublic void createJSON() throws IOException{
JsonObject object = new JsonObject(); // 創建一個json對象
object.addProperty("cat", "it"); // 為json對象添加屬性
JsonArray languages = new JsonArray(); // 創建json數組
JsonObject language = new JsonObject();
language.addProperty("id", 1);
language.addProperty("ide", "Eclipse");
language.addProperty("name", "java");
languages.add(language); // 將json對象添加到數組
language = new JsonObject();
language.addProperty("id", 2);
language.addProperty("ide", "XCode");
language.addProperty("name", "Swift");
languages.add(language);
language = new JsonObject();
language.addProperty("id", 3);
language.addProperty("ide", "Visual Studio");
language.addProperty("name", "C#");
languages.add(language);
object.add("languages", languages); // 將數組添加到json對象
object.addProperty("pop", true);
String jsonStr = object.toString(); // 將json對象轉化成json字符串
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("data.json")));
pw.print(jsonStr);
pw.flush();
pw.close();
}
參考文檔
JSON官網
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64440.html
摘要:在測試當中兼容性表現良好,但是執行效率不如預期不及,筆者一度想要放棄該項目,但是造輪子不易,既然造了就稍微聊一聊吧,歡迎探討進步。是一個中的接口,使用者可以自行實現該接口用以解析需要的類型,作用類似中的自定義的功能僅為預留,暫未做支持。 零 引子 0 源碼 已上傳 github https://github.com/mikylin-pr... 1 開發依賴 Maven : 3.3.9 ...
摘要:環境要求使用純來搭建環境,要求的版本必須在以上。即視圖解析器解析文件上傳等等,如果都不需要配置的話,這樣就可以了。可以將一個字符串轉為對象,也可以將一個對象轉為字符串,實際上它的底層還是依賴于具體的庫。中,默認提供了和的,分別是和。 在 Spring Boot 項目中,正常來說是不存在 XML 配置,這是因為 Spring Boot 不推薦使用 XML ,注意,并非不支持,Spring...
摘要:配置和編碼格式使用提供過濾器處理字符編碼。請求從不改變資源的狀態,無副作用。中添加,采用默認配置已經足夠面對大多數場景注入參考鏈接手把手教你整合最優雅框架我的編碼習慣接口定義設計最佳實踐 創建項目 打開IDEA -> Create New Project勾選Create from archetypeshowImg(https://segmentfault.com/img/bV5tS4?...
閱讀 1074·2021-11-19 09:40
閱讀 2213·2021-11-15 18:00
閱讀 1267·2021-10-18 13:34
閱讀 2248·2021-09-02 15:40
閱讀 1533·2019-08-30 14:01
閱讀 1113·2019-08-30 11:11
閱讀 2482·2019-08-29 15:26
閱讀 722·2019-08-29 14:15