在查询字符串中的JSON对象中发送数组时,每个数组元素是否应该具有相同的键?例如,如果我有这个JSON对象:
{"sodas[]": ["coke", "sprite", "fanta"]}
查询字符串是否应如下所示,所有键完全相同(sodas%5B%5D
)?
sodas%5B%5D=coke&sodas%5B%5D=sprite&sodas%5B%5D=fanta
或者查询字符串中是否有索引值或其他内容(sodas%5B0%5D
,sodas%5B1%5D
等)?
sodas%5B0%5D=coke&sodas%5B1%5D=sprite&sodas%5B2%5D=fanta
答案 0 :(得分:1)
没有“sodas”键的方括号的第一个语句可行。我不确定您使用的是哪种语言,但这里是HTML,jQuery和PHP的示例。
HTML(文件:y.html)
<!DOCTYPE html>
<html>
<head>
<title>XYZ</title>
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<input type="button" id="send" value="Send">
<hr noshade>
<div id="output"></div>
<script type="text/javascript">
var $output = $('#output');
$('#send').click(function(e){
e.preventDefault();
var $json = '{"sodas":["coke","pepsi","fanta"]}';
$.ajax({url:"/so/y.php",type:"post",dataType:"html",data:'json='+escape($json),
success:function(obj){
$output.html(obj);
}
});
});
</script>
</body>
</html>
JavaScript escape()函数格式化了json POST参数,如下所示(取自Firebug。)
json=%7B%22sodas%22%3A%5B%22coke%22%2C%22pepsi%22%2C%22fanta%22%5D%7D
PHP(文件:y.php)
<?php
$json = json_decode(stripslashes($_POST['json']));
var_dump($json);
浏览器输出显示PHP对象的var_dump()'字符串表示形式,单键关联数组的值为三个苏打品牌的数组。
object(stdClass)#1 (1) { ["sodas"]=> array(3) { [0]=> string(4) "coke" [1]=> string(5) "pepsi" [2]=> string(5) "fanta" } }