如何在PHP中从URL获取JSON
我正在使用这组数据进行Ajax调用:如何在PHP中从URL获取JSON,php,arrays,json,object,url,Php,Arrays,Json,Object,Url,我正在使用这组数据进行Ajax调用: "type":"alter", "param":{ "key1":"value1", "key2":"value2" } 在PHP中,我通过以下方式处理此问题: •获取文件\u获取\u内容('php://input): •通过和对URL进行解码和切片: [ "type=alter", "param[key1]=value1", "param[key2]=value2" ] •通过=,进一步对每一个进行切片: [
"type":"alter",
"param":{
"key1":"value1",
"key2":"value2"
}
在PHP中,我通过以下方式处理此问题:
•获取文件\u获取\u内容('php://input)
:
•通过和对URL进行解码和切片:
[
"type=alter",
"param[key1]=value1",
"param[key2]=value2"
]
•通过=
,进一步对每一个进行切片:
[
[
"type",
"alter"
],
[
"param[key1]",
"value1"
],
[
"param[key2]",
"value2"
]
]
•然后创建一个对象$data
,每个索引0作为键,索引1作为值:
$data = array(
"type"=>"alter",
"param[key1]"=>"value1",
"param[key2]"=>"value2"
)
问题:
当我在Ajax中的数据集是严格的key=value
时,这不是问题,但当我添加数组或对象作为值时,它会变得混乱。我想用PHP处理Ajax中显示的数据集。我期望的结果是:
$data = array(
"type"=>"alter",
"param"=>array(
"key1"=>"value1",
"key2"=>"value2"
)
)
因此,当我获得$data['param']
时,它将给我所有的参数键。我可以手动完成,但我认为可能有一种更简单的方法。尤其是如果我可以从文件获取所需的对象php://input)
马上。有一个内置函数来解析参数字符串:
您这样做的原因可能是最复杂的方式吗?当然,使用$\u GET
(或$\u POST
)和json\u decode
)会更容易些?这与json有什么关系?您的数据是表单url编码的。您可以直接从$\u POST
中读取它,在那里它将被自动解析php://input)
因为我得到的数据普遍用于get、POST、PUT和DELETE方法@伊恩。。谢谢那正是我要找的!
$data = array(
"type"=>"alter",
"param"=>array(
"key1"=>"value1",
"key2"=>"value2"
)
)
<?php
$in = 'type=alter¶m%5Bkey1%5D=value1¶m%5Bkey2%5D=value2';
parse_str($in, $data);
print_r($data);
/*
Array
(
[type] => alter
[param] => Array
(
[key1] => value1
[key2] => value2
)
)
*/
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST)) {
parse_str(file_get_contents('php://input'), $_POST);
}
print_r($_POST);
/*
Array
(
[type] => alter
[param] => Array
(
[key1] => value1
[key2] => value2
)
)
*/
}