Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;JSON文本必须是对象或数组;错误_Php_Json - Fatal编程技术网

Php &引用;JSON文本必须是对象或数组;错误

Php &引用;JSON文本必须是对象或数组;错误,php,json,Php,Json,我正在使用PHP连接到API,并使用JSON和HTTPPOST注册一些信息,但进展不太顺利 我就是这么做的: 我使用JSON_encode函数创建了一个JSON对象: $name = 'Mike'; $surname = 'Hans'; $fields = array('name' => json_encode($name), 'surname' => json_encode($surname)); $postData = json_encode($flds); 一旦我有了p

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

我就是这么做的:

  • 我使用JSON_encode函数创建了一个JSON对象:

    $name = 'Mike';
    
    $surname = 'Hans';
    
    $fields = array('name' => json_encode($name), 'surname' => json_encode($surname));
    $postData = json_encode($flds);
    
  • 一旦我有了post数据,我就用curl连接到API并用oauth登录,但是API响应说:

  • JSON文本必须是对象或数组(但找到数字、字符串、true、, false或null,使用allow_NOREF允许此操作)

    我已经检查了Google中的allow_nonref,但是我找不到PHP的任何内容,我只找到了Perl。有人有任何解决方案/建议吗


    谢谢

    您可能需要将整个帖子作为JSON发送,而不需要嵌套调用
    JSON\u encode
    ,如下所示:

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

    您可能需要将整个帖子作为JSON发送,而不需要嵌套调用
    JSON\u encode
    ,如下所示:

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

    为了跟进@nickb的回答,请只使用一个调用
    json\u encode
    ,你和我在构建有效的json方面做得更好,而且引导更有效!(尽管我们正在进入微观优化领域)

    您是否尝试过将
    json_encode
    的输出放入一个验证器/格式化程序中,比如下面的一个:


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

    要跟进@nickb的答案,请只使用一个调用
    json\u encode
    ,你和我在构建有效的json方面做得更好,而且启动更高效!(尽管我们正在进入微观优化领域)

    您是否尝试过将
    json_encode
    的输出放入一个验证器/格式化程序中,比如下面的一个:


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

    为什么要分别编码,然后一起编码?为什么要分别编码,然后一起编码?