定义
JSON是一种轻量级数据交换格式,全称为Javascript Object Notation,ECMA(欧洲计算机制造商协会)的一个子集。采用完全独立于编程语言的文本格式来储存和表示数据。采用键值对key-value形式。
如下所示:
{ status: 1, data: [ { id: 1, name: "聊聊shell——环境变量配置文件", picSmall: "http://img.mukewang.com/55237dcc0001128c06000338-300-170.jpg", picBig: "http://img.mukewang.com/55237dcc0001128c06000338.jpg", description: "为你带来shell中的环境变量配置文件", learner: 12312 }, { id: 2, name: "数学知识在CSS动画中的应用", picSmall: "http://img.mukewang.com/55249cf30001ae8a06000338-300-170.jpg", picBig: "http://img.mukewang.com/55249cf30001ae8a06000338.jpg", description: "数学知识与CSS结合实现酷炫效果", learner: 45625 ], msg: "成功" }
数据结构
数据结构 Obeject:对象形式
使用{}包含的键值对结构,
key必须为String类型
value可以是任意类型数据结构或数据类型
Array:数组形式 使用中括号[]表示数据类型是数组,其里面的元素以逗号“,”分隔开 数据类型 String
number
boolean
null
优点
- 轻量级,占用宽带小
- 易于阅读和编写,便于js解析
- 支持复合数据类型(数组、对象、字符串、数字),能直接为服务器段代码使用,大大简化了服务器端和客户端的代码开发量。
- 易于解析,客户端JavaScript可以简单的通过eval_r()进行JSON数据的读取;
缺点
- 相对XML通用性较差,数据可描述性较差。
与XML的比较
- 据体积方面:JSON相对XML来讲,数据的体积小(去掉了很多重复的标记字符),传递的速度更快些
- 数据交互方面:JSON与JavaScript的交互更加方便,更容易解析处理,更好地进行数据交互
- 数据描述和可读性方面:JSON对数据的描述性比XML较差。
- 传输速度方面:JSON的速度要远远快于XML
总结:配置文件用XML,传输数据用JSON(所谓的轻量级体现在解析上);逐步解析用XML(SAX技术可以边传输边解析),整体解析用JSON(目前只能整体一次性解析);大规模数据传输用XML,小数据用JSON。
解析
JSON字符串和JSON对象
1.JSON字符串
JSON字符串如下所示:
var person='{"name":"zhangsan","sex":"男","age":"24"}';//json字符串
2.JSON对象
var person={"name":"zhangsan","sex":"男","age":"24"};//json对象
3.JS中JSON字符串和JSON对象之间的转换
- JSON字符串转换为JSON对象
var jsonStr='{"name":"zhangsan","sex":"男","age":"24"}';//json字符串 //方式一 var jsonObj = JSON.parse(jsonStr); //方式二 var jsonObj = eval('(' + jsonStr +')');
- JSON对象转换为JSON字符串
var jsonObj={"name":"zhangsan","sex":"男","age":"24"};//json字符串 var jsonStr = JSON.stringify(jsonObj);
Java中定义JSON字符串
在Java中定义JSON如下:
String jsonSte = "{\"name\":\"lucky\",\"age\":\"20\"}";
上述使用了斜杠\来对双引号进行转义,但是这样定义JSON字符串复杂,还容易写错,这里有一个简便的方式如下:
导入Jackson的jar包
使用Maven导入,如下:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version> </dependency>
定义JSON字符串
Map map=new HashMap(); map.put("name","lucky"); map.put("age","20"); String param= JSON.toJSONString(map);
参考:https://www.cnblogs.com/nxxshxf/p/5226813.html