JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
1.json格式的规范
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象。而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组。当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象。
有一个网页版工具可以校验一个string是不是合法的json,地址为:http://www.bejson.com/
2.如何序列化复杂的map?
以jackson框架与Map<Student,String>为例,序列化的时候不报错,Student对象以toString()的形式表示。反序列化的时候会失败。
原因是json的规范限制。
解决方法1:自己写Student类的deserializer。
解决方法2:将Map<Student,String>转换为 class A{List<Student> list1;List<String> list2}后再序列化,让list1与list2的下标一一对应。