JSON即javascript object notation,是javascript對象表示法的子集。具備如下特色:javascript
JSON的值能夠是:java
JSON對象在花括號中書寫,對象能夠包含多個鍵值對,例如:json
java{ "firstName":"John", "lastName":"Doe" }
JSON數組在方括號中書寫,數組中能夠包含多個對象,例如:數組
java{ "employees":[ {"firstName":"John","lastName":"Doe"}, {"firstName":"Anna","lastName":"Smith"}, {"firstName":"Peter","lastName":"Jones"} ] }
在以上的實例中,根部的花括號表示這是一個JSON對象,該對象的鍵是employees,值是一個JSON數組,在這個數組中有3個JSON對象,每一個JSON對象之間也使用逗號分隔。maven
在JSON官網咱們能夠查看到各個語法對json的支持,對於java來講比較成熟的是google-gson。ide
其maven依賴以下:google
xml<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version> </dependency>
如今編寫程序解析如下的test.json
:spa
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數據:code
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()); }
生成JSON數據的關鍵是JSON對象中的add
和addProperty
兩個方法。前者用於向JSON對象中添加數組或者另外一個JSON對象,後者用於爲JSON對象添加屬性。如下的代碼將生成上面例子中的test.json
。xml
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(); }