json的本质是字符串,那么可以通过url加参数的方式传递json字符串吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json的本质是字符串,那么可以通过url加参数的方式传递json字符串吗相关的知识,希望对你有一定的参考价值。
可以,但是你要先用JSON.stringify格式化成字符串,再用encodeURIComponent把JSON里面的符号转转为url支持的编码。但是没有意义,假设你要传递这个数据:
"firstName":"Bill" ,
"lastName":"Gates"
如果用CURL可以这么传:
localhost/?firstName=Bill&lastName=Gates
但是如果你用CURL传JSON:
localhost/?json=%7B%22firstName%22%3A%22Bill%22%20%2C%20%22lastName%22%3A%22Gates%22%7D
拿到json后面的参数后,你要先还原编码为字符串,再将字符串还原为JSON对象,然后才能操作数据。
如果是结构复杂的JSON数据,建议用AJXA传递,JSON.parse(XMLHttpRequest.responseText)就可以直接拿到文件中的JSON对象。
参考技术A 当然可以啦,不过你需要注意:JSON字符串需要用urlencoding编码
对绝大多数HTTP client而言,URL长度都有上限,所以不能传太大的JSON,一般而言几K应该没问题,但是再长点就不好说了
如何解决Http请求参数中加号变空格问题
http请求参数中英文加号是要进行url编码的,因为在http请求参数中加号就是空格的替代字符啊(因为空格对于http协议规定的url来说是一个非法字符),所以当你的请求参数中出现了一个加号,就会一律理解成一个空格。解决的方法就是对加号进行编码转换,url编码的方法是将需要转换的字符,转换成英文百分号加字符的十六进制形式,比如空格除了加号表示以外也可以表示成%20,20就是空格的十六进制形式。 参考技术A 错误原因:我没有深究原因,宽泛的说,就是在传输前后过程中,经历的几次编码和解码标准不同,导致加号、空格等字符的错误。
简单的解决方法:
遇到这种情况时,一种快速的解决方法是: 把参数中所有的加号“+”,替换为“%2B”即可
(可能这种方法并不好,应该可以采用传递前对数据进行某格式的encode,获取数据时进行decode即可)
以上是关于json的本质是字符串,那么可以通过url加参数的方式传递json字符串吗的主要内容,如果未能解决你的问题,请参考以下文章
java HttpUrlConnection的post()方法的参数没有加在url的后边