Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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_encode以字符串格式保存布尔值_Php_Arrays_Json - Fatal编程技术网

php json_encode以字符串格式保存布尔值

php json_encode以字符串格式保存布尔值,php,arrays,json,Php,Arrays,Json,试图将对象的php数组保存到json文件中,但布尔属性保存为字符串: [ { "title" : "My Page", "url" : "mypage", "type" : "content", "final" : "false" // supposed to be simply false } ] 为什么呢。。。有我可以用的旗子吗?目前我使用的是JSON\u PRETTY\u PRINT | JSON\u

试图将对象的php数组保存到json文件中,但布尔属性保存为字符串:

[
    {
        "title" : "My Page",
        "url"   : "mypage",
        "type"  : "content",
        "final" : "false" // supposed to be simply false
    }
]

为什么呢。。。有我可以用的旗子吗?目前我使用的是
JSON\u PRETTY\u PRINT | JSON\u NUMERIC\u CHECK

我感觉转换工作正常,值实际上是一个字符串。您可以使用
gettype($var)
进行确认

请注意,URL编码只提供字符串值。您可以尝试切换到JSON

要使PHP能够处理application/json,请添加此函数,然后调用它:

function convertJsonBody() {
     $methodsWithDataInBody = array(
          'POST',
          'PUT',
     );

     if (
          isset($_SERVER['CONTENT_TYPE'])
          && (strpos(strtolower($_SERVER['CONTENT_TYPE']), 'application/json') !== FALSE)
          && isset($_SERVER['REQUEST_METHOD'])
          && in_array($_SERVER['REQUEST_METHOD'], $methodsWithDataInBody)
     ) {
          $_POST = json_decode(file_get_contents('php://input'), TRUE);
          foreach($_POST as $key => $value) {
               $_REQUEST[$key] = $value;
          }
     }
} 

早在PHP5.4-PHP7测试时,您的示例数组总是正确编码。数组中的
final
类型必须是字符串。请向我们显示对象的变量转储。如果您是对的,可能是我将数据传递给服务器的方式。我将尝试更改标头中的数据的传递方式,如下所示:data[1][final]:true-在接收到数据后,是否需要在服务器上进行任何进一步的处理?如果您使用的是URL编码,则所有值都将是字符串。您必须转换为布尔值。或者您可以切换到使用JSON内容类型(“application/JSON”)。PHP本身并不理解JSON。如果您只是想完成它,您可以尝试类似于
$\u POST=json\u decode(file\u get\u contents('php://input",对),,使PHP能够处理应用程序/json(尽管它很快而且脏——还可以检查$\u服务器[“请求方法”]和$\u服务器[“内容类型”],并填充$\u请求)。