JSON对象
有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串。
先介绍一下json对象,首先说到对象的概念,对象的属性是可以用:对象.属性进行调用的。例如:
- 1
- 2
- 3
- 1
- 2
- 3
以上就是json对象。是一个用perosn.name这种方式进行属性的调用。第三行代码就是看person的类型,为object类型。
JSON字符串
字符串,我们常说的JavaScript中的字符串是单引号或者双引号引起来的。那么json字符串是什么概念呢?
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
以上就是b就是一个字符串,也是一个json字符串,之所以叫json字符串,因为字符串的格式符合json的格式,所以叫做json字符串,第三行代码也匹配其中的类型为string。
json字符串和json对象的转换
json字符串转json对象,调用parse方法:
- 1
- 2
- 3
- 1
- 2
- 3
json对象转为json字符串:
- 1
- 2
- 3
- 1
- 2
- 3
Springmvc接受json字符串类型。
在有一段时间做项目,和朋友交流的时候,基于Rest风格的开发,一直理解为前端ajax提交的一个json对象,后台以@RequestBody接受的json对象,后来我发现自己错了,其实不然,前端传入后台的是一个json格式的字符串,下面有一个例子:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
上面代码,首先push方法将其封装到数组中,其表现格式:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
JSON.stringify(saveData)将其转换为json字符串:同时ajax请求的时候也要指定dataType: “json”,contentType:”application/json” 这样就可以轻易的将一个对象或者List传到Java端。
后台接受
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
后台用@RequestBody将其封装到
List<User>
中。然后进入Service层。GET、POST方式提时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理)。
jquery 中如何将数组转化为json字符串,然后再转化回来
1、javascript里面的数组都是关联数组吧?
js对象的本质就是关联数组。索引数组也就是常说的数组,数组是对象,所以数组的本质也是关联数组,但通常没人这么说。
2、唯一区别就是:索引数组的索引只能是0和正整数,但它是有序的。关联数组的索引很宽松,但关联数组是无序的,就这个。
3、json对象是严格版本的关联数组。
4、至少在chrome下,索引数组和关联数组的速度是一样的。
5、索引数组的好处就是格式简单,关联数组的好处是键可以任意定义。
现代浏览器中提供了JSON.stringify()方法 将数组,对象转成json字符串。
JSON.stringify 把一个对象转换成json字符串,
JSON.parse 把一个json字符串解析成对象。
不支持的可以引入json2.js
$.fn.stringifyArray = function(array) {return JSON.stringify(array) //将数组转为JSON字符串}$.fn.parseArray = function(array) {return JSON.parse(array) //将 由JSON字符串转换为JSON对象}$.fn.stringify = function() {
return JSON.stringify(this); //将数组转为JSON字符串,此处使用this调用
}
然后调用:
$("").stringifyArray(array)
转自:http://www.cnblogs.com/lovetree/p/6425080.html 此文言简意赅