JSON快速入门(Java版)--慕课网笔记
来源:互联网 发布:画图软件技巧 编辑:程序博客网 时间:2024/06/08 12:26
第1章 课程概述
1-1 JSON课程介绍
JSON是行业内使用最为广泛的数据传输格式
- JSON基础知识
- Java中两种常见的JSON处理方式
- 综合运用
第2章 基础入门
2-1 什么是JSON
JSON是一种与开发语言无关的、轻量级的数据格式。全称是JavaScript Object Notation。
优点:易于人的阅读和编写,易于程序解析与生成
{ "name": "JSON快速入门(Java版)", "author": "李广", "content": [ "JSON基础入门", "常用JSON处理" ], "time": { "value": 30, "unit": "分钟" }}
2-2 数据类型表示
- 数据结构
- Object
使用花括号包含键值对结构,Key必须是String类型,value为任何基本类型或数据结构 - Array
使用中括号[]来起始,并用逗号,来分割元素。
- Object
- 基本类型
- String
- number
- true
- false
- null
2-3 JSON数据演示
{ "name": "王小二", "age": 25.2, "birthday": "1990-01-01", "school": "蓝翔", "major": [ "理发", "挖掘机" ], "has_girlfriend": false, "car": null, "house": null, "comment": "这是一个注释"}
第3章 JSON in Java
3-1 JSON使用
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20090211</version> </dependency>
public class JsonObjectSample { public static void main(String[] args) { jSONObjectSample(); }// {// "name": "王小二",// "age": 25.2,// "birthday": "1990-01-01",// "school": "蓝翔",// "major": [// "理发",// "挖掘机"// ],// "has_girlfriend": false,// "car": null,// "house": null,// "comment": "这是一个注释"// } private static void jSONObjectSample() { JSONObject wangxiaoer = new JSONObject(); Object nullObject = null; try { 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); wangxiaoer.put("car", nullObject); wangxiaoer.put("house", nullObject); wangxiaoer.put("comment", "这是一个注释"); System.out.println(wangxiaoer.toString()); } catch (JSONException e) { e.printStackTrace(); } }}
3-2 使用Map 构建JSON
private static void createJsonByMap() { Map<String,Object> wangxiaoer = new HashMap<String,Object>(); 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); wangxiaoer.put("car", nullObject); wangxiaoer.put("house", nullObject); wangxiaoer.put("comment", "这是一个注释"); System.out.println(new JSONObject(wangxiaoer).toString()); }
3-3 使用Java Bean构建对象
private 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("这是一个注释"); System.out.println(new JSONObject(wangxiaoer)); }
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; 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; }}
3-4 从文件读取JSON
{ "birthday": "1990-01-01", "major": [ "理发", "挖掘机" ], "school": "蓝翔", "car": null, "name": "王小二", "has_girlfriend": false, "comment": "这是一个注释", "house": null, "age": 25.2}
public class ReadJSONSample { public static void main(String[] args) throws IOException, JSONException { File file = new File(ReadJSONSample.class.getResource("wangxiaoer.json").getFile()); String content = FileUtils.readFileToString(file); 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++) { String m = (String)majorArray.get(i); System.out.println("专业-" + (i+1) + m); } }}
3-5 从文件读取JSON 判断null
public class ReadJSONSample { public static void main(String[] args) throws IOException, JSONException { File file = new File(ReadJSONSample.class.getResource("wangxiaoer.json").getFile()); String content = FileUtils.readFileToString(file); JSONObject jsonObject = new JSONObject(content); if(!jsonObject.isNull("name")) { System.out.println("姓名是:"+jsonObject.getString("name")); } if(!jsonObject.isNull("nickname")) { System.out.println("姓名是:"+jsonObject.getString("nickname")); } 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++) { String m = (String)majorArray.get(i); System.out.println("专业-" + (i+1) + m); } }}
3-6 JSON 总结
- Json中没有Date类型
- 通过JSON不能将JavaBean反解析回来
第4章 第四章 GSON的使用
4-1 GSON介绍
google-gson
4-2 GSON生成JSON数据
public class GsonCreateSample { public static void main(String[] args) { 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("这是一个注释"); Gson gson = new Gson(); System.out.println(gson.toJson(wangxiaoer)); }}
public class Diaosi { @SerializedName("NAME") 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; 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; }}
4-3 生成JSON数据
public class GsonCreateSample { public static void main(String[] args) { 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(){ public String translateName(Field f) { if(f.getName().equals("name")) { return "NAME"; } return f.getName(); } }); Gson gson = gsonBuilder.create(); System.out.println(gson.toJson(wangxiaoer)); }}
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; private transient String 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; } public String getIgnore() { return ignore; } public void setIgnore(String ignore) { this.ignore = ignore; }}
4-4 GSON解析
public class GsonReadSample { public static void main(String[] args) throws IOException { File file = new File(ReadJSONSample.class.getResource("../jsonTest/wangxiaoer.json").getFile()); String content = FileUtils.readFileToString(file); Gson gson = new Gson(); Diaosi wangxiaoer = gson.fromJson(content, Diaosi.class); System.out.println(wangxiaoer.toString()); }}
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; private transient String 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; } public String getIgnore() { return ignore; } public void setIgnore(String ignore) { this.ignore = ignore; } @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 + "]"; }}
4-5 GSON解析 带日期转换
public class GsonReadSample { public static void main(String[] args) throws IOException { File file = new File(ReadJSONSample.class.getResource("../jsonTest/wangxiaoer.json").getFile()); String content = FileUtils.readFileToString(file); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); DiaosiWithBirthday wangxiaoer = gson.fromJson(content, DiaosiWithBirthday.class); System.out.println(wangxiaoer.getBirthday().toLocaleString()); }}
public class DiaosiWithBirthday { 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 Date birthday; private transient String 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 getIgnore() { return ignore; } public void setIgnore(String ignore) { this.ignore = ignore; } public Date getBirthday() { return birthday; } public void setBirthday(Date 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 + "]"; }}
4-6 集合类解析
public class GsonReadSample { public static void main(String[] args) throws IOException { File file = new File(ReadJSONSample.class.getResource("../jsonTest/wangxiaoer.json").getFile()); String content = FileUtils.readFileToString(file); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); DiaosiWithBirthday wangxiaoer = gson.fromJson(content, DiaosiWithBirthday.class); System.out.println(wangxiaoer.getBirthday().toLocaleString()); System.out.println(wangxiaoer.getMajor()); System.out.println(wangxiaoer.getMajor().getClass()); }}
public class DiaosiWithBirthday { private String name; private String school; private boolean has_girlfriend; private double age; private Object car; private Object house; private List<String> major; private String comment; private Date birthday; private transient String 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 getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public String getIgnore() { return ignore; } public void setIgnore(String ignore) { this.ignore = ignore; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public List<String> getMajor() { return major; } public void setMajor(List<String> major) { this.major = major; }}
4-7 总结
- JSON时Android SDK官方的库
- GSON适用于服务端开发
- GSON比JSON功能更强大
关于JSON库的总结
功能:映射Java Object与json格式数据
- 通过Annotation注解来声明。
- 支持自定义属性名称。
- 支持包含或排除属性。
- 支持自定义接口完成解析/生成过程。
《JSON快速入门(Java版)》视频地址
阅读全文
0 0
- JSON快速入门(Java版)--慕课网笔记
- json快速入门(cjson解析)
- json快速入门
- JSON-LIB快速入门
- JSON-LIB快速入门
- json-lib快速入门
- JSON快速入门
- [Json.net]快速入门
- JSON快速入门指南
- json 快速入门
- Python学习笔记(六):多线程、XML、JSON(快速入门篇)
- [学习笔记]JSON for java入门总结
- Java FX 学习笔记一: 快速入门
- mysql json类型快速入门
- JSON快速入门之GSON
- JSON快速入门之org.json
- JQ笔记(jQuery + ajax + json)入门
- JSON 入门笔记
- 如何去掉字符串中不需要的字符
- 存储过程的作用是什么?
- JDBC为什么要使用PreparedStatement而不是Statement
- JVM内存管理的机制
- 关于在集成显卡下使用OpenGL碰到的坑
- JSON快速入门(Java版)--慕课网笔记
- characterController OnCollisionEnter OnTriggerEnter 的总结(二)
- C++ Special:const关键字和常量指针 vs 指针常量
- 关于glm数学库的坑
- 融云实践经验
- 重温python基础5:引用
- 【Leetcode】【python】Integer to Roman
- IntelliJ IDEA安装Rust插件
- wireshark如何抓取本机包