- JSON
- 2.1 对象格式
- 2.2 数组格式
- 2.3 案例
- 3 Gson
- **将对象转换为JSON字符串**
- **将JSON字符串转换为对象**
- **其他案例(由此可理解数组格式的案例)**
- 4 FastJson
- **将对象转换为JSON字符串**
- **将JSON字符串转换为对象**
- **其他案例(数组)**
简介:
JSON: Javascript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
2.1 对象格式//java类表示 class Book{ private String name; private String info; //其他方法 get/set... } //创建对象 Book b = new Book(); b.setName(“金苹果”); b.setInfo(“种苹果”); //XML://JSON: { "name":"金苹果", "info":"种苹果" } 金苹果 种苹果
一个对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.)
{ "key1":"value1", "key2":"value2", "key3":"value3", "key4":"value4" }
格式: 键与值之间使用冒号连接, 多个键值对之间使用逗号分隔. 键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.) 键值对的值, 可以是JS中的任意类型的数据2.2 数组格式
在JSON格式中可以与对象互相嵌套
[元素1,元素2...]2.3 案例
{ "name":"小明", "age":18, "pengyou":["张三","李四","王五","麻子", { "name":"老师", "info":"技术钻研" } ], "heihei":{ "name":"大长刀", "length":"40m" } }
主要是理解 数组中可以放对象,对象中可以放数组 的思想,先不必深究, 后面有案例解释
3 Gson谷歌的解析工具
转换JSON字符串的步骤: 1. 引入JAR包 2. 在需要转换JSON字符串的位置编写如下代码即可: String json = new Gson().toJSON(要转换的对象); 3. 在需要转换Java对象的位置, 编写如下代码: 对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例:
//要转换的Book对象 public class Book { private String id; private String name; private String info; @Override public String toString() { return "Book{" + "id='" + id + ''' + ", name='" + name + ''' + ", info='" + info + ''' + '}'; } public Book(String id, String name, String info) { this.id = id; this.name = name; this.info = info; } }将对象转换为JSON字符串
Book b = new Book(100, "金苹果","种植苹果"); //1.创建Gson对象 Gson g = new Gson(); //转换 String s = g.toJson(b); //输出 System.out.println(s);将JSON字符串转换为对象
//1.创建Gson对象 Gson g = new Gson(); //2.转换 ,在字符串中使用转义字符,即"表示” Book b = g.fromJson("{"id":"100","name":"金苹果","info":"种植苹果"}" , Book.class); System.out.println(b.getId());其他案例(由此可理解数组格式的案例)
//1. 创建Gson对象 Gson g = new Gson(); //2. 转换 包含数组格式的JSON HashMap data = g.fromJson("{"id":"100","name":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土","谁知盘中餐"]}" , HashMap.class); //获取page内容 System.out.println(data.get("page")); //获取page类型 System.out.println(data.get("page").getClass()); //用集合获取 List page = (List) data.get("page"); System.out.println(page.get(0)); System.out.println(page.get(1)); System.out.println(page.get(2));
由此可见,数组格式的类型是ArrayLisy。
如果数组中再添加对象呢
//1. 创建Gson对象 Gson g = new Gson(); //2. 转换 HashMap data = g.fromJson("{"id":"100","name":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土"" + ",{"name":"老师","info":"技术钻研" }]}" , HashMap.class); //获取page内容 System.out.println(data.get("page")); //获取page类型 System.out.println(data.get("page").getClass()); //用集合获取 List page = (List) data.get("page"); System.out.println(page.get(0)); System.out.println(page.get(1)); System.out.println(page.get(2)); //获取对象类型 System.out.println(page.get(2).getClass());
由此可见,数组中加入的对象类型是linkedTreeMap
步骤: 1. 引入JAR包 2. 在需要转换JSON字符串的位置编写如下代码即可: String json=JSON.toJSonString(要转换的对象); 3. 在需要转换Java对象的位置, 编写如下代码: 类型 对象名=JSON.parseObject(JSON字符串, 类型.class); 或 List<类型> list=JSON.parseArray(JSON字符串,类型.class);将对象转换为JSON字符串
Book book = new Book("1002","唐诗","床前明月光"); //转换 String json = JSON.toJSonString(book); System.out.println(json);将JSON字符串转换为对象
Book book = JSON.parseObject("{"id":"1002","info":"床前明月光","name":"唐诗"}" , Book.class); System.out.println(book.getId()); System.out.println(book.getName()); System.out.println(book.getInfo());其他案例(数组)
//转换 Liststrings = JSON.parseArray("["一二三","二三四","三四五"]", String.class); System.out.println(strings.get(0)); System.out.println(strings.get(1)); System.out.println(strings.get(2));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)