网站连通率,电商设计师发展前景,如何用表格做网站,x wordpress 视差 主题1. 了解JSON
简介#xff1a;JSON#xff08;JavaScript Object Notation#xff09;#xff0c;即JS对象简谱 , 是一种轻量级的数据交换格式。
进一步理解#xff1a;
JSON和JavaScript的关系#xff1a;两者之间的关系就是雷锋和雷锋塔的关系#xff0c;两者之间没…1. 了解JSON
简介JSONJavaScript Object Notation即JS对象简谱 , 是一种轻量级的数据交换格式。
进一步理解
JSON和JavaScript的关系两者之间的关系就是雷锋和雷锋塔的关系两者之间没有什么关系数据交换格式实现客户端与服务器之间的数据交换当时通用的数据交换语言是XML但是Douglas crockford觉得xml的生成和解析都太麻烦所以他提出了一种简化格式也就是json更具体见4.JSON解析轻量级是对比而言的JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读并且在数据交换方面由于 JSON 所使用的字符要比 XML 少得多可以大大得节约传输数据所占用得带宽。
2.JSON对象格式
试着用不同的语言描述一本书对象书名内容能够看出JSON在轻量级这块的优势
Java
Public class Test {public static void main() {Book b new Book();b.setName(“金苹果”); b.setInfo(“种苹果好辛苦”);}
}
class Book {private String name;private String info;构造方法;get/set方法...
}JavaScript var b new Object();b.name 金苹果; b.info 种苹果好辛苦;XML
bookname金苹果/nameinfo种苹果好辛苦/info
/bookJSON
{ name:金苹果,info:种苹果好辛苦
}3.JSON语法格式建议结合案例对比着看
一个对象由一个大括号表示大括号中通过键值对来描述对象的属性 (可以理解为大括号中包含的是一个个的键值对)键与值之间使用冒号连接多个键值对之间使用逗号分隔键值对的键应使用引号引住 (通常Java解析时键不使用引号会报错。而JS能正确解析)键值对的值, 可以是JS中的任意类型的数据数组格式[元素1,元素2…]在JSON格式中可以互相嵌套比如对象1里出现数组1数组1里又出现对象2。
案例
{name:种水果,info:种水果好辛苦,fruit:[苹果,香蕉,{name:西瓜,info:无籽西瓜}],haha:{name:大长刀,length:40cm}
}4.JSON解析
Java用JSON做什么上面也说过了用来实现数据交换。我们知道JSON存的数据类型是字符串并且这个字符串由一个个键值对组成像极了Java对象里属性和值的关系。我们想能不能通过某种办法把JSON字符串变成Java相应的对象、实现对数据方便地操作呢或者我们想把Java对象的信息变成JSON字符串展示给别人看呢下面引入JSON解析的概念。
序列化将Java中的对象快速的转换为 JSON格式的字符串。反序列化将JSON格式的字符串, 转换为Java的对象。
Java官方没有提供JSON解析相应的API本文提供两个最常用的JSON解析方法分别是Google的Gson阿里的FastJson使用JSON解析之前要先获取相应的jar包。
Gson解析
将对象转换为JSON字符串步骤 引入jar包在需要转换JSON字符串的位置编写如下代码即可: String json new Gson().toJSON(要转换的对象); 案例 Book b new Book(金苹果,讲述了种植苹果的心酸历程,20,100); String json new Gson().toJson(b);System.out.println(json);输出结果
{name:金苹果,info:讲述了种植苹果的心酸历程,prize:20,page:100}将JSON字符串转换为对象步骤 1.引入jar包 2.在需要转换Java对象的位置, 编写如下代码: 类型 对象 new Gson().fromJson(JSON字符串,对象类型.class); 案例1 String json1 {\name\:\金苹果\,\info\:\讲述了种植苹果的心酸历程\,\prize\:10,\page\:100};Book b1 new Gson().fromJson(json,Book.class);System.out.println(b1.getPrize());输出结果 10案例2
注意字符串最外层有花括号’{}’英文引号前有转义字符\ // 如果字符串信息和对象信息不匹配 ,则字符串转hashmap对象因为hashmap类型也是按键值对存储。String json2 {\name\:\金苹果\,\info\:\讲述了种植苹果的心酸历程\,\prize\:20,\page\:100,\content\:[\锄禾日当午\,\汗滴禾下土\,\呵呵呵呵呵\]};HashMap map new Gson().fromJson(json2,HashMap.class);System.out.println(map.get(content));// 这里说明一下如果字符串里有数组转HashMap后数组按List存储动手试一下ArrayList list (ArrayList) map.get(content);System.out.println(list.get(0));输出结果 [锄禾日当午汗滴禾下土呵呵呵呵呵]锄禾日当午FastJson解析
将对象转换为JSON字符串步骤 引入jar包在需要转换JSON字符串的位置编写如下代码即可: String jsonJSON.toJSONString(要转换的对象); 案例 Book b new Book(金苹果,讲述了种植苹果的心酸历程,20,100);String fastJson JSON.toJSONString(b);System.out.println(fastJson);输出结果
{info:讲述了种植苹果的心酸历程,name:金苹果,page:100,prize:20}将JSON字符串转换为对象步骤 引入jar包在需要转换Java对象的位置, 编写如下代码: 类型 对象名JSON.parseObject(JSON字符串, 类型.class); 或 List类型 listJSON.parseArray(JSON字符串,类型.class); 案例1 Book b1 JSON.parseObject({\name\:\金苹果\,\info\:\讲述了种植苹果的心酸历程\,\prize\:20,\page\:100},Book.class);System.out.println(b1);运行结果 Book{name金苹果, info讲述了种植苹果的心酸历程, prize20, page100}案例2数组转为list集合 ListString list JSON.parseArray([\锄禾日当午\,\汗滴禾下土\,\呵呵呵呵呵\],String.class);System.out.println(list.get(1));运行结果 汗滴禾下土案例3解析一段稍微复杂的JSON案例
{name:种水果,info:种水果好辛苦,fruit:[苹果,香蕉,{name:西瓜,info:无籽西瓜}],haha:{name:大长刀,length:40cm}
}代码 String json [{name:种水果,info:种水果好辛苦,fruit:[苹果,香蕉,{name:西瓜,info:无籽西瓜}],haha:{name:大长刀,length:40cm}}];//1. 最外层是数组格式这里数组只包含一个元素ListMap list JSON.parseArray(json,Map.class);Map map list.get(0);String info (String) map.get(info);System.out.println(info); //种水果好辛苦//2. 键fruit对应的值类型是数组用到方法toJSONString()将数组转成字符串格式再进行解析String fruit JSON.toJSONString(map.get(fruit));ListString list1 JSON.parseArray(fruit,String.class);System.out.println(list1.get(0)); //苹果// 字符串转对象Map map1 JSON.parseObject(list1.get(2),Map.class);System.out.println(map1.get(info)); //无籽西瓜运行结果 总结
JSON解析无非就两种情况序列化和反序列化序列化简单一些反序列化注意一下对象的类型最外层对这里的字符串加了[]初试为数组toJSONString()方法实现数组向字符串的转化建议动手敲一下代码体会更深一些。
参考文章
1.JSON基本使用
2.FastJson的简单使用