一尘不染

PHP解码JSON POST [关闭]

json

这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助请访问帮助中心

7年前关闭。

我正在尝试接收POSTJSON形式的数据。我将其卷曲为:

curl -v --header 'content-type:application/json' -X POST --data '{"content":"test content","friends":[\"38383\",\"38282\",\"38389\"],"newFriends":0,"expires":"5-20-2013","region":"35-28"}' http://testserver.com/wg/create.php?action=post

在PHP方面,我的代码是:

$data = json_decode(file_get_contents('php://input'));

    $content    = $data->{'content'};
    $friends    = $data->{'friends'};       // JSON array of FB IDs
    $newFriends = $data->{'newFriends'};
    $expires    = $data->{'expires'};
    $region     = $data->{'region'};

但是即使我print_r ( $data)什么也没有回到我身边。这是POST没有表格的正确处理方法吗?


阅读 266

收藏
2020-07-27

共1个答案

一尘不染

您提交的JSON数据无效JSON。

当您在外壳中使用’时,您将怀疑它不会处理\“。

curl -v --header 'content-type:application/json' -X POST --data '{"content":"test content","friends": ["38383","38282","38389"],"newFriends":0,"expires":"5-20-2013","region":"35-28"}'

可以正常工作。

<?php
$foo = file_get_contents("php://input");

var_dump(json_decode($foo, true));
?>

输出:

array(5) {
  ["content"]=>
  string(12) "test content"
  ["friends"]=>
  array(3) {
    [0]=>
    string(5) "38383"
    [1]=>
    string(5) "38282"
    [2]=>
    string(5) "38389"
  }
  ["newFriends"]=>
  int(0)
  ["expires"]=>
  string(9) "5-20-2013"
  ["region"]=>
  string(5) "35-28"
}
2020-07-27