“JSON文本必须是对象或数组”错误

时间:2011-11-29 06:15:50

标签: php json

我正在使用PHP连接到API并使用JSON和HTTP POST注册一些信息,但是进展不顺利。

这就是我的所作所为:

  1. 我使用json_encode函数创建一个JSON对象:

    $name = 'Mike';
    
    $surname = 'Hans';
    
    $fields = array('name' => json_encode($name), 'surname' => json_encode($surname));
    $postData = json_encode($flds);
    
  2. 一旦我获得了帖子数据,我只需使用curl连接到API并使用oauth登录,但API响应说:

  3.   

    JSON文本必须是对象或数组(但找到数字,字符串,true,   false或null,使用allow_nonref来允许这个)

    我已经检查过Google中的allow_nonref,但我找不到任何PHP的内容,我发现只有Perl。有没有人有任何解决方案/建议来解决这个问题?

    谢谢!

2 个答案:

答案 0 :(得分:1)

您可能需要将整个POST作为JSON发送而不嵌套对json_encode的调用,如下所示:

$fields = array('name' => $name, 'surname' => $surname); 
$postData = json_encode( $fields);

答案 1 :(得分:0)

要跟进@ nickb的回答,请只使用一次json_encode的调用,它在构建你和我的有效json方面要好得多,并且启动效率更高! (虽然我们正在进入微优化领域)。

您是否尝试过json_encode的输出并将其放入验证器/格式化程序中,例如:http://jsonviewer.stack.hu/

此外,我认为另一个可能的问题可能是您要发送的标头?接收服务器可能是严格的,并强制您使用正确的“内容类型”。是否有可用的API文档?