如何在请求参数中发送数组或对象


Tsung - How to send array or object in request parameters?

我需要发送像php这样的对象

$obj = [
        array('id' => '111');
    ];

作为POST请求参数。我试着用

[{struct,[{<<"id">>,<<"111">>},{<<"id">>, <<"222">>}]}]
[{struct,[{&quot;id&quot;,&quot;111&quot;}]}]
[{struct,[{&quot;id&quot;:&quot;111&quot;}]}]
[{struct,[{&quot;id&quot;=>&quot;111&quot;}]}]
[[{&quot;id&quot;,&quot;111&quot;}]]
[{&quot;id&quot;:&quot;111&quot;}]
[{&quot;id&quot;=>&quot;111&quot;}]

,但它是错误的。我试图用&quot;代替",但这也是错误的。我在用户手册中找不到任何关于使用数组或对象的例子。有人遇到过这个问题吗?

使用方括号构建查询字符串,然后对其进行URL编码。

查询字符串示例:

someArray[someindex_1][name]=blah&someArray[someindex_1][id]=123&someArray[someindex_2][name]=bah blah&someArray[someindex_2][id]=456

发送编码字符串作为post请求的主体。这将导致服务器上出现如下所示的数组:

print_r($_POST['someArray']);
// array(
// "someindex_1" => array(
//    "name" => "blah"
//    "id" => 123
//  )
//  "someindex_2" => array(
//    "name" => "blah blah"
//    "id" => 456
//  )
//);

你可以在POST请求中使用HTML元素名加上方括号"[]"来发送数组。下面是一个例子:

<input type="text" name="countries[]" value="Nigeria">
<input type="text" name="countries[]" value="Ghana">

然后在PHP代码中,您可以这样检索值:

$countries = $_POST['countries']; //$countries is now an array of POST-ed countries
var_dump($countries);

但是如果你想发送的是一个对象,那么你必须序列化它。您可以使用下面的代码:

$obj = get_an_object_somehow();
$encoded_obj = base64_encode(serialize($obj));

然后在你的HTML表单中:

<input type="text" name="myObj" value="$encoded_obj">

最后,在表单处理脚本中,您可以按如下方式反序列化它:

$decoded_obj = unserialize(base64_decode($obj));//get back original object
var_dump($decoded_obj);