如何在 JSON 对象中为查询字符串形成数组?

发布于 2024-09-25 00:56:39 字数 459 浏览 7 评论 0原文

当在查询字符串中发送 JSON 对象中的数组时,每个数组元素是否应该具有相同的键?例如,如果我有这个 JSON 对象:

{"sodas[]": ["coke", "sprite", "fanta"]}

查询字符串是否应该像这样,并且所有键都完全相同 (sodas%5B%5D)?

sodas%5B%5D=coke&sodas%5B%5D=sprite&sodas%5B%5D=fanta

或者查询字符串中是否应该包含索引值或其他内容(sodas%5B0%5Dsodas%5B1%5D 等)?

sodas%5B0%5D=coke&sodas%5B1%5D=sprite&sodas%5B2%5D=fanta

When sending an array in a JSON object in a query string, is each array element supposed to have the same key? For example, if I have this JSON object:

{"sodas[]": ["coke", "sprite", "fanta"]}

Should the query string look like this, with all the keys exactly the same (sodas%5B%5D)?

sodas%5B%5D=coke&sodas%5B%5D=sprite&sodas%5B%5D=fanta

Or should the query strings have an index value in them or something (sodas%5B0%5D, sodas%5B1%5D, etc)?

sodas%5B0%5D=coke&sodas%5B1%5D=sprite&sodas%5B2%5D=fanta

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乙白 2024-10-02 00:56:39

第一个没有“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" } } 

The first statement without the square braces for the "sodas" key would work. I'm not sure which languages you are using but here is an example with HTML, jQuery, and PHP.

HTML (file: 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>

The JavaScript escape() function formatted the json POST parameter as follows (taken from Firebug.)

json=%7B%22sodas%22%3A%5B%22coke%22%2C%22pepsi%22%2C%22fanta%22%5D%7D

PHP (file: y.php)


<?php
$json = json_decode(stripslashes($_POST['json']));
var_dump($json);

The browser output displays the var_dump()'d string representation of a PHP object, single-keyed associative array with the value being an array of three soda brands.

object(stdClass)#1 (1) { ["sodas"]=>  array(3) { [0]=>  string(4) "coke" [1]=>  string(5) "pepsi" [2]=>  string(5) "fanta" } } 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文