国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

淺談使用java解析和生成JSON

2019-11-26 15:00:38
字體:
來源:轉載
供稿:網友

JSON概述

JSON即javascript object notation,是javascript對象表示法的子集。具有以下特點:

數據放在鍵值對中;
數據由逗號分隔;
花括號表示對象;
方括號表示數組。

JSON的值可以是:

數字(整數或浮點數)
字符串(在雙引號中)
邏輯值(true或false)
數組(方括號內)
對象(花括號內)
null

JSON的基本語法

JSON對象

JSON對象在花括號中書寫,對象可以包含多個鍵值對,例如:

{  "firstName":"John",  "lastName":"Doe"}

JSON數組

JSON數組在方括號中書寫,數組中可以包含多個對象,例如:

{  "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依賴如下:

<dependency>  <groupId>com.google.code.gson</groupId>  <artifactId>gson</artifactId>  <version>2.2.4</version></dependency>

現在編寫程序解析以下的test.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數據:

public 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。

public 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();}

在JAVA中構造和解析JSON我用的是org.json,下面是兩個函數,一個是創建JSON,一個是從文本構造JSON并解析之。

創建json

//construct json and output it  public String jsonTest() throws JSONException{   JSONObject json=new JSONObject();   JSONArray jsonMembers = new JSONArray();   JSONObject member1 = new JSONObject();   member1.put("loginname", "zhangfan");   member1.put("password", "userpass");   member1.put("email","10371443@qq.com");   member1.put("sign_date", "2007-06-12");   jsonMembers.put(member1);    JSONObject member2 = new JSONObject();   member2.put("loginname", "zf");   member2.put("password", "userpass");   member2.put("email","8223939@qq.com");   member2.put("sign_date", "2008-07-16");   jsonMembers.put(member2);   json.put("users", jsonMembers);    return json.toString(); } 

 解析json

//construct json from String and resolve it. public String jsonTest2() throws JSONException{   String jsonString="{/"users/":[{/"loginname/":/"zhangfan/",/"password/":/"userpass/",/"email/":/"10371443@qq.com/"},{/"loginname/":/"zf/",/"password/":/"userpass/",/"email/":/"822393@qq.com/"}]}";   JSONObject json= new JSONObject(jsonString);   JSONArray jsonArray=json.getJSONArray("users");   String loginNames="loginname list:";   for(int i=0;i<jsonArray.length();i++){     JSONObject user=(JSONObject) jsonArray.get(i);     String userName=(String) user.get("loginname");     if(i==jsonArray.length()-1){       loginNames+=userName;     }else{       loginNames+=userName+",";     }   }   return loginNames; } 

 JAVA中處理JSON還是相當方便的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新乡县| 余姚市| 垦利县| 阳泉市| 疏勒县| 休宁县| 新巴尔虎左旗| 海林市| 清水县| 广灵县| 乐至县| 任丘市| 丰镇市| 武邑县| 海门市| 嘉兴市| 鄂托克前旗| 甘肃省| 泰顺县| 友谊县| 六枝特区| 遵义县| 巩义市| 镶黄旗| 房产| 固始县| 剑河县| 司法| 元朗区| 闻喜县| 丹棱县| 红河县| 沾化县| 曲阜市| 项城市| 渭南市| 朝阳县| 多伦县| 沙河市| 霍林郭勒市| 英山县|