摘要:時間年月日星期日說明本文部分內容均來自慕課網。慕課網教學示例源碼無個人學習源碼第一章課程概述課程介紹課程須知本課程面向所有使用語言進行開發的小伙伴。
時間:2017年05月21日星期日
說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com
教學示例源碼:無
個人學習源碼:https://github.com/zccodere/s...
課程須知
本課程面向所有使用Java語言進行開發的小伙伴。
JSON是行業內使用最為廣泛的數據傳輸格式
課程大綱
JSON基礎知識 Java中兩種常見的JSON處理方式 綜合運用第二章:基礎入門 2-1 什么是JSON
什么是JSON
JSON是一種與開發語言無關的、輕量級的數據格式。全稱JavaScript Object Notation。
優點
易于人的閱讀和編寫 易于程序解析與生成
一個簡單的JSON樣例
2-2 數據類型表示數據結構
Object:{} Array:, []
基本類型
string number true false null
Object:對象數據結構
使用花括號{}包含的鍵值對結構,Key必須是string類型,value為任何基本類型或數據結構。
示意圖
Array:數組數據格式
使用中括號[]來起始,并用逗號, 來分隔元素。
示意圖
2-3 JSON數據演示代碼演示:
{ "name" : "王小二", "age" : 25.2, "birthday" : "1990-01-01", "school" : "藍翔", "major" : ["理發","挖掘機"], "has_girlfriend" : false, "car" : null, "house" : null, "comment" : "這是一個注釋" }第三章:JSON in Java 3-1 JSON的使用
項目搭建
首先創建一個項目,教學使用maven進行構建,我學習時使用gradle進行構建。因本次課程以學習JSON為主,所以省略項目搭建過程,具體源碼可參考我的github地址。
使用JSONObject生成JSON格式數據
代碼演示:
/** * 通過 JSONObject 生成JSON */ private static void createJsonByJsonObject() { JSONObject wangxiaoer = new JSONObject(); // 定義nullObject Object nullObject = null; wangxiaoer.put("name","王小二"); wangxiaoer.put("age",25.2); wangxiaoer.put("birthday","1990-01-01"); wangxiaoer.put("school","藍翔"); wangxiaoer.put("major",new String[]{"理發","挖掘機"}); wangxiaoer.put("has_girlfriend",false); // 使用nullObject跳過編譯器檢查 wangxiaoer.put("car",nullObject); wangxiaoer.put("house",nullObject); wangxiaoer.put("comment","這是一個注釋"); System.out.println(wangxiaoer.toString()); }3-2 使用Map構建JSON
代碼演示:
/** * 通過 HashMap 生成JSON */ public static void createJsonByMap(){ Map3-3 使用Java Bean構建對象wangxiaoer = new HashMap (); Object nullObject = null; wangxiaoer.put("name","王小二"); wangxiaoer.put("age",25.2); wangxiaoer.put("birthday","1990-01-01"); wangxiaoer.put("school","藍翔"); wangxiaoer.put("major",new String[]{"理發","挖掘機"}); wangxiaoer.put("has_girlfriend",false); // 使用nullObject跳過編譯器檢查 wangxiaoer.put("car",nullObject); wangxiaoer.put("house",nullObject); wangxiaoer.put("comment","這是一個注釋"); // 通過 JSONObject 的構造函數接收一個 Map 生成 JSON System.out.println(new JSONObject(wangxiaoer).toString()); }
代碼演示:
1.構建JavaBean
package com.myimooc.json.model; import java.util.Arrays; /** * Created by ChangComputer on 2017/5/21. */ public class Diaosi { private String name; private String school; private boolean has_girlfriend; private double age; private Object car; private Object house; private String[] major; private String comment; private String birthday; // 使用 transient 關鍵字,生成 JSON 時忽略該字段 private transient String ignore; public String getIgnore() { return ignore; } public void setIgnore(String ignore) { this.ignore = ignore; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public boolean isHas_girlfriend() { return has_girlfriend; } public void setHas_girlfriend(boolean has_girlfriend) { this.has_girlfriend = has_girlfriend; } public double getAge() { return age; } public void setAge(double age) { this.age = age; } public Object getCar() { return car; } public void setCar(Object car) { this.car = car; } public Object getHouse() { return house; } public void setHouse(Object house) { this.house = house; } public String[] getMajor() { return major; } public void setMajor(String[] major) { this.major = major; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } @Override public String toString() { return "Diaosi{" + "name="" + name + """ + ", school="" + school + """ + ", has_girlfriend=" + has_girlfriend + ", age=" + age + ", car=" + car + ", house=" + house + ", major=" + Arrays.toString(major) + ", comment="" + comment + """ + ", birthday="" + birthday + """ + ", ignore="" + ignore + """ + "}"; } }
2.編寫構建代碼
/** * 通過 JavaBean 生成JSON【推薦使用】 */ public static void createJsonByBean(){ Diaosi wangxiaoer = new Diaosi(); wangxiaoer.setName("王小二"); wangxiaoer.setAge(25.2); wangxiaoer.setBirthday("1990-01-01"); wangxiaoer.setSchool("藍翔"); wangxiaoer.setMajor(new String[]{"理發","挖掘機"}); wangxiaoer.setHas_girlfriend(false); wangxiaoer.setCar(null); wangxiaoer.setHouse(null); wangxiaoer.setComment("這是一個注釋"); // 通過 JSONObject 的構造函數接收一個 Bean 生成 JSON System.out.println(new JSONObject(wangxiaoer).toString()); }3-4 從文件讀取JSON
代碼演示:
1.添加common-io依賴
// https://mvnrepository.com/artifact/commons-io/commons-io compile group: "commons-io", name: "commons-io", version: "2.5"
2.準備JSON數據文件
{ "name" : "王小二", "age" : 25.2, "birthday" : "1990-01-01", "school" : "藍翔", "major" : ["理發","挖掘機"], "has_girlfriend" : false, "car" : null, "house" : null, "comment" : "這是一個注釋" }
3.編寫讀取代碼
package com.myimooc.json.demo; import org.apache.commons.io.FileUtils; import org.json.JSONArray; import org.json.JSONObject; import java.io.File; import java.io.IOException; /** * 讀取 JSON 數據演示類 * Created by ChangComputer on 2017/5/21. */ public class ReadJsonSample { public static void main(String[] args) throws IOException { createJsonByFile(); } /** * 讀取 JSON 數據 * */ public static void createJsonByFile() throws IOException { File file = new File(ReadJsonSample.class.getResource("/wangxiaoer.json").getFile()); String content = FileUtils.readFileToString(file,"UTF-8"); JSONObject jsonObject = new JSONObject(content); System.out.println("姓名:"+jsonObject.getString("name")); System.out.println("年齡:"+jsonObject.getDouble("age")); System.out.println("有沒有女朋友?:"+jsonObject.getBoolean("has_girlfriend")); JSONArray majorArray = jsonObject.getJSONArray("major"); for (int i = 0 ; i < majorArray.length(); i++) { System.out.println("專業"+(i+1)+":"+majorArray.get(i)); } // 判斷屬性的值是否為空 if(!jsonObject.isNull("nickname")){ System.out.println("昵稱:"+jsonObject.getDouble("nickname")); } } }3-5 從文件讀取JSON判斷null
代碼演示:
// 判斷屬性的值是否為空 if(!jsonObject.isNull("nickname")){ System.out.println("昵稱:"+jsonObject.getDouble("nickname")); }3-6 總結
本章總結
講解了如何生成JSON格式數據 講解了如何解析JSONObject第四章:GSON的使用 4-1 GSON介紹
開源地址
https://github.com/google/gson
GSON優點
功能更加強大 性能更加出色 使用方式更加便捷和簡單4-2 GSON生成JSON數據
代碼演示:
1.添加依賴
// https://mvnrepository.com/artifact/com.google.code.gson/gson compile group: "com.google.code.gson", name: "gson", version: "2.8.0"
2.編寫代碼
package com.myimooc.json.gson; import com.google.gson.FieldNamingStrategy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.myimooc.json.model.Diaosi; import java.lang.reflect.Field; /** * 使用 GSON 進行 JSON 相關操作 * Created by ChangComputer on 2017/5/21. */ public class GsonCreateSample { public static void main(String[] args) { createJsonByGsonBean(); } /** * * 通過 JavaBean 生成JSON【推薦使用】 */ private static void createJsonByGsonBean() { Diaosi wangxiaoer = new Diaosi(); wangxiaoer.setName("王小二"); wangxiaoer.setAge(25.2); wangxiaoer.setBirthday("1990-01-01"); wangxiaoer.setSchool("藍翔"); wangxiaoer.setMajor(new String[]{"理發","挖掘機"}); wangxiaoer.setHas_girlfriend(false); wangxiaoer.setCar(null); wangxiaoer.setHouse(null); wangxiaoer.setComment("這是一個注釋"); wangxiaoer.setIgnore("不要看見我"); GsonBuilder gsonBuilder = new GsonBuilder(); // 設置格式化輸出 gsonBuilder.setPrettyPrinting(); // 自定義轉換策略 gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() { @Override public String translateName(Field f) { if(f.getName().equals("name")){ return "NAME"; } return f.getName(); } }); // 生成Gson Gson gson = gsonBuilder.create(); System.out.println(gson.toJson(wangxiaoer)); } }4-3 生成JSON數據
代碼演示:
package com.myimooc.json.gson; import com.google.gson.FieldNamingStrategy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.myimooc.json.model.Diaosi; import java.lang.reflect.Field; /** * 使用 GSON 進行 JSON 相關操作 * Created by ChangComputer on 2017/5/21. */ public class GsonCreateSample { public static void main(String[] args) { createJsonByGsonBean(); } /** * * 通過 JavaBean 生成JSON【推薦使用】 */ private static void createJsonByGsonBean() { Diaosi wangxiaoer = new Diaosi(); wangxiaoer.setName("王小二"); wangxiaoer.setAge(25.2); wangxiaoer.setBirthday("1990-01-01"); wangxiaoer.setSchool("藍翔"); wangxiaoer.setMajor(new String[]{"理發","挖掘機"}); wangxiaoer.setHas_girlfriend(false); wangxiaoer.setCar(null); wangxiaoer.setHouse(null); wangxiaoer.setComment("這是一個注釋"); wangxiaoer.setIgnore("不要看見我"); GsonBuilder gsonBuilder = new GsonBuilder(); // 設置格式化輸出 gsonBuilder.setPrettyPrinting(); // 自定義轉換策略 gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() { @Override public String translateName(Field f) { if(f.getName().equals("name")){ return "NAME"; } return f.getName(); } }); // 生成Gson Gson gson = gsonBuilder.create(); System.out.println(gson.toJson(wangxiaoer)); } }4-4 GSON解析
代碼演示:
package com.myimooc.json.gson; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.myimooc.json.demo.ReadJsonSample; import com.myimooc.json.model.Diaosi; import com.myimooc.json.model.DiaosiWithBirthday; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; /** * 使用Gson解析 JSON 文件 * Created by ChangComputer on 2017/5/21. */ public class GsonReadSample { public static void main(String[] args) throws IOException { createJsonByGsonFile(); } /** * 讀取 JSON 數據 * */ public static void createJsonByGsonFile() throws IOException { File file = new File(GsonReadSample.class.getResource("/wangxiaoer.json").getFile()); String content = FileUtils.readFileToString(file,"UTF-8"); // 無日期轉換 Gson gson = new Gson(); Diaosi wangxiaoer = gson.fromJson(content,Diaosi.class); System.out.println(wangxiaoer.toString()); // 帶日期轉換 Gson gson2 = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); DiaosiWithBirthday wangxiaoer2 = gson2.fromJson(content,DiaosiWithBirthday.class); System.out.println(wangxiaoer2.getBirthday().toString()); // 集合類解析 System.out.println(wangxiaoer2.getMajor()); System.out.println(wangxiaoer2.getMajor().getClass()); } }4-5 GSON解析日期轉換
代碼演示:
// 帶日期轉換 Gson gson2 = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); DiaosiWithBirthday wangxiaoer2 = gson2.fromJson(content,DiaosiWithBirthday.class); System.out.println(wangxiaoer2.getBirthday().toString());4-6 集合類解析
代碼演示:
// 替換為集合類 private Listmajor;
GSON會自動解析集合類字段
// 集合類解析 System.out.println(wangxiaoer2.getMajor()); System.out.println(wangxiaoer2.getMajor().getClass());4-7 總結
JSON和GSON
JSON是Android SDK官方的庫 GSON適用于服務端開發 GSON比JSON功能更強大
JSON庫的特點
功能:映射Java Object與json格式數據 1.通過Annotation注解來聲明 2.支持自定義屬性名稱 3.支持包含或排序屬性 4.支持自定義接口自己完成解析或生成過程
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70091.html
摘要:時間年月日星期日說明本文部分內容均來自慕課網。整體目錄結構如下項目文件用于數據持久化配置項目配置配置視圖解析器配置靜態資源映射配置配置配置自定義指令配置解析器配置,類似于項目啟動類新建,注冊配置類,并將其和當前關聯。 時間:2017年3月19日星期日說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:無個人學習源碼:https://githu...
時間:2017年10月16日星期一說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程簡介 1-1 課程介紹 本門課程的主要內容 RxJava是什么 RxAndroid是什么 RxJava常用操作符(重點、難點) 怎樣在項目中使用RxJava和RxAndroid 如何學...
摘要:小時學會學習總結時間年月日星期六說明本文部分內容均來自慕課網。慕課網教學示例源碼暫無。數據庫操作下第六章事務管理事務管理只有查詢的時候不加事務,其它任何操作都要加事務。第七章課程回顧課程回顧總結介紹安裝配置的使用數據庫操作 《2小時學會SpringBoot》學習總結 時間:2017年2月18日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示...
摘要:數據綁定入門學習總結時間年月日星期日說明本文部分內容均來自慕課網。慕課網教學示例源碼個人學習源碼第一章課程介紹數據綁定入門概述數據綁定概念來自百度百科簡單綁定是將一個用戶界面元素控件的屬性綁定到一個類型對象實例上的某個屬性的方法。 《SpringMVC數據綁定入門》學習總結 時間:2017年2月19日星期日說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.co...
摘要:入門篇學習總結時間年月日星期三說明本文部分內容均來自慕課網。主要的功能是日志記錄,性能統計,安全控制,事務處理,異常處理等等。 《Spring入門篇》學習總結 時間:2017年1月18日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼:https://git...
閱讀 1470·2021-09-30 09:57
閱讀 1476·2021-09-09 09:33
閱讀 2240·2021-09-04 16:40
閱讀 1805·2021-09-01 10:50
閱讀 3252·2021-09-01 10:31
閱讀 2549·2019-08-30 15:56
閱讀 2979·2019-08-30 15:44
閱讀 3482·2019-08-29 17:29