在编程语言中,只要有了数组(array)和对象(object)就能够储存一切数据,同时在不同的语言之间进行数据交换的时候,倾向于使用字符串,因为字符串在各个语言中的处理方式大致相同,那么JSON的诞生也就在情理之中了。
JSON的优势在于:
(1).JSON是纯文本格式,是独立于语言和平台的。
(2).生成和解析相对于XML而言要简单。
(3).读写的速度更快。
json的格式:
1.{}包裹,里面必须是键值对,键是string类型,值可以为任意类型
'{"class":"二年一班","students":[{"name":"小王","age":"18","gender":"male"},{"name":"小红","age":"16","gender":"female"}],"array":[20,21,22]}'
2.[]包裹,里面是数组,可以是{}包裹的对象数组,也可以是字符串,数字组成的数组,但里面的类型最好是一样的,不然后台接收时不好解析
'[{"name":"小王","age":"18","gender":"male"},{"name":"小红","age":"16","gender":"female"}]';
'[10,20,30]'
js拼接json
有时前台给后台传数据,会使用json格式,这就需要前台将json生成好
{}中要用键值法放入数据,[]中用push放数据
var obj={};
obj.className="二年一班";
obj.studentsNum=5;
var students = [];
for(var i=0;i<5;i++){
var student={};
student.name="小王"+i;
student.age=15+i;
students.push(student)
}
obj.students=students;
var jsonstr=JSON.stringify(obj)
console.log(jsonstr)
生成的json字符串为:
{"className":"二年一班","studentsNum":5,"students":[{"name":"小王0","age":15},{"name":"小王1","age":16},{"name":"小王2","age":17},{"name":"小王3","age":18},{"name":"小王4","age":19}]}
注意,虽然js中数组有个叫关联数组的,里面也可以用键值对方法放入数据,但在json中不建议使用,如:
var a=[];
a.name=10;
a.push("b")
console.log(a)
生成这个东西
这会导致json格式混乱。
总结:{}中要用键值法放入数据,键为字符串,值可以任意格式,[]中用push放数据,可以是对象数组,也可以使字符串、数字数组,但数组里的数据类型最好要统一
js中json字符换和对象的转换
1.字符串转对象
用JSON.parse(string)
var jsonstr='[{"name":"小王","age":"18","gender":"male"},{"name":"小红","age":"16","gender":"female"}]';
var jsonobj=JSON.parse(jsonstr);
console.log(jsonobj)
2.对象转字符串
用JSON.stringify(obj)
var jsonstr1='{"class":"二年一班","students":[{"name":"小王","age":"18","gender":"male"},{"name":"小红","age":"16","gender":"female"}],"array":[20,21,22]}'
var jsonobj1=JSON.parse(jsonstr1);
var jsonstr2=JSON.stringify(jsonobj1)
java中生成json
后台将数据传给前台,使用最多的格式就是使用json
一般使用map返回,map中插入查询结果,最后使用JSON.toJSONString(map)生成json
@ResponseBody
@RequestMapping(value = "getOrderPartsNum", produces = "text/plain;charset=UTF-8")
public String getOrderPartsNum(@RequestParam Map<String, String> params) {
Map<String,Object> result=new HashMap<String,Object>();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = statisticsManagerService.getOrderPartsList(params);
result.put("data",list);
result.put("msg","查询成功");
result.put("code","1")
} catch (Exception e) {
e.printStackTrace();
result.put("msg","查询失败");
result.put("code","0")
}
return JSON.toJSONString(result);
}
java解析json字符串生成map
如果json是{}包裹的对象,则转成Map<String,Object>格式
Map<String,Object> obj = JSONObject.parseObject(json,Map.class);
如果json是[]包裹的数据,则转成list集合,集合的类型根据数据类型而定
List<Map> punishList=JSONObject.parseArray(json,Map.class);