一、基本概念
1.JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式
2.采用完全独立于编程语言的文本格式来存储和表示数据
3.JSON 比 XML 更小、更快,更易解析
4.读取、写入、发送和接收JSON数据对象时,需要转换成字符串,并能从字符串转换为JSON数据对象
5.json对象就是若干个 键/值 对的集合,键是string,值可以是基本类型,或者嵌套一个Json对象,或者是一个数组(数组里的元素可以是基本类型,也可以是json对象,可以继续嵌套
二、JSON 与 JS 对象
1.JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串
var obj = {a: 'Hello', b: 'World'}; // 这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; // 这是一个 JSON 字符串,本质是一个字符串
2.JSON 和 JS 对象互转
(1) JSON.stringify() 实现从对象转换为 JSON 字符串
var json = JSON.stringify({a: 'Hello', b: 'World'}); // 结果是 '{"a": "Hello", "b": "World"}'
(2) JSON.parse() 实现从 JSON字符串 转换为对象
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); // 结果是 {a: 'Hello', b: 'World'}
三、fastjson
1.引包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.12</version>
</dependency>
2.json类型字符串转为各种Object
1) Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
2) JSONObject parseObject(String text); // 把JSON文本(要是{ }形式) parse成JSONObject
T parseObject(String text ,Class<T> clazz); // 把JSON文本(要是{ }形式) parse成指定Object
3) JSONArray parseArray(String text); // 把JSON文本(要是[ ]形式)parse成JSONArray
List<T> parseArray(String text, Class<T> clazz); // 把JSON文本(要是[ ]形式)parse成指定JavaBean集合
3.Object转为json类型字符串或者JSONObject,JSONObject
1) Object toJSON(Object javaObject) // 将JavaBean转换为JSONObject或者JSONObject
2) String toJSONString(Object object); // 将JavaBean序列化为带格式的JSON文本
4.JSON与List,Map格式对比
基本类型 | 带对象(引用类型) | |
---|---|---|
map打印 | {a1=hahaha, a2=heiheihei} | {a1=test.json.TestPerson@72cbe322, a2=test.json.TestPerson@27ad080f} |
JSON.toJson(map) | {“a1”:“hahaha”,“a2”:“heiheihei”} | {“a1”:{“name”:“李明”,“age”:19},“a2”:{“name”:“张三”,“age”:12}} |
List打印 | [af, 11] | [test.json.TestPerson@27ad080f, test.json.TestPerson@50ec2522] |
JSON.toJson(list) | [“af”,11] | [{“name”:“李明”,“age”:19},{“name”:“张三”,“age”:12}] |
注意:(只要是jsonObject或者jsonArray都会打印成具体的样子,或者说Object,因为重写了toString()方法)
四、学习json相关知识心得
1.get,post的默认形式是 get传值在url上,post传值在body里面,但是这个不一定,比如angularJs,Order.getData({url里面的数据 },{body里面的数据 },function(){成功}, function(){失败}),跟get,post方法无关
2.@RequestParam是从url里面取值(不管get,post),默认情况下不用写,@RequestResponse是从body里面取值,一般只能有一个,拿到body里面的值(有转义字符的值)一般需要fastjson转化为对象
3.前台传数据,比如param{ id: 2, name : “hh”},浏览器在传递的时候会自动(编码,或者说序列化,大概意思),可以在浏览器network里面看请求的具体参数(这里面的值就是传到后台的实际值)
五、常用字符集以及字符编码
字符集 | 字符编码 | 国家/地区 |
---|---|---|
ASCII | ASCII编码(256个) | 美国标准 |
GB2312——GB2312-80——GBK GBK编码 (中国,GBK微软提出的)——GB18030 | GBK编码 | 中国,GBK微软提出的 |
BIG5 | BIG5编码 | 台湾 |
Unicode | UTF-8,UTF-16,UTF-32 | 万国码 |
参考网址
注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。
ps : 有错误的还望各位大佬指正,小弟不胜感激