php json_encode以字符串格式保存布尔值
试图将对象的php数组保存到json文件中,但布尔属性保存为字符串: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
[
{
"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请求)。