Php JSON:所有值都转换为字符串
我使用Angular($http.post)和PHP将json文件保存到服务器。保存的json文件将所有值转换/保存为字符串,包括数字和布尔值。这显然会在稍后读取json文件时导致问题 PHP代码:Php JSON:所有值都转换为字符串,php,json,angularjs,Php,Json,Angularjs,我使用Angular($http.post)和PHP将json文件保存到服务器。保存的json文件将所有值转换/保存为字符串,包括数字和布尔值。这显然会在稍后读取json文件时导致问题 PHP代码: header('Content-Type: application/json;charset=utf-8'); $fh = fopen('savedfiles/'.$_POST['fileName'], 'w') or die("can't open file"); if(fwrite($fh,
header('Content-Type: application/json;charset=utf-8');
$fh = fopen('savedfiles/'.$_POST['fileName'], 'w') or die("can't open file");
if(fwrite($fh, json_encode($_POST['fileData']))===FALSE){
echo "FAILED";
}
else {
echo "SUCCESS";
}
fclose($fh);
Angular/$http代码:
var deferred = $q.defer();
var savePromise = $http.post('save.php',{fileName:file_name,fileData:data}).
then(function(response){
deferred.resolve(response.data);
},function(response){
deferred.resolve("FAILED");
});
return deferred.promise;
谢谢你的建议
更新::
更新:请注意,您不会直接从
POST
获取JSON对象;它只是一个字符串,所以对它进行json\u编码是没有意义的。它已经被编码,所以只需直接保存到文件中,而无需通过编码器。注意,您不会直接从POST
获取JSON对象;它只是一个字符串,所以对它进行json\u编码是没有意义的。它已经被编码,所以只需直接保存到文件中,而无需通过编码器。您可以尝试使用JSON.stringify()
将数据转换为适合存储在字符串中的格式,然后您可以使用JSON.parse()再次解析它。
您可以尝试使用JSON.stringify()
将数据转换为适合存储在字符串中的格式,然后使用JSON.parse()
您正在对已经发布的数据进行json_编码。在本例中,您有一组键值对,所有值都是字符串格式
您需要在客户端对它们进行编码,然后将JSON字符串放入一个字段中,您可以发布该字段。然后,JSON字符串保留了所有数据类型
var json_str = JSON.stringify(myobject);
现在将json_str作为一个HTML表单字段进行发布。您正在对已经发布的数据进行json_编码。在本例中,您有一组键值对,所有值都是字符串格式
您需要在客户端对它们进行编码,然后将JSON字符串放入一个字段中,您可以发布该字段。然后,JSON字符串保留了所有数据类型
var json_str = JSON.stringify(myobject);
现在,将json_str作为HTML表单字段发布。请显示“json_encode($\u POST['fileData'])”的输出。如何将字符串以外的内容保存到文件中?以及$\u POST['fileName']时会发生什么情况
是。/../something.json
?我认为问题在于php函数json\u encode
将传入的json视为一个巨大的字符串,即使它包含json,如果直接从php打印而不使用json\u encode,$\u POST['filename']的原始值是多少?这似乎没有任何意义,但弄清楚发生了什么的第一步是要知道PHP真正接收到了什么。请显示“json_encode($_POST['fileData'])”的输出,如何在文件中保存字符串以外的内容?以及当$_POST['fileName']时会发生什么情况
是。/../something.json
?我认为问题在于php函数json\u encode
将传入的json视为一个巨大的字符串,即使它包含json,如果直接从php打印而不使用json\u encode,$\u POST['filename']的原始值是多少?这似乎没有任何意义,但弄清楚发生了什么的第一步是了解PHP真正接收到了什么。这在这里没有用处。因为json_encode返回的是字符串,而不是json对象。没有必要将它们转换为字符串agian。(-:这很有效!我必须使用stripslashes()将“\”添加到内容中(请参阅pastebin.com/5g3w71zS)。谢谢!!!这在这里没有用处。因为json_编码返回的是字符串化字符串,而不是json对象。并且没有必要将它们转换为字符串agian。(:成功了!我必须使用stripslashes()将“\”添加到内容中(请参见pastebin.com/5g3w71zS)。谢谢!!!好的,成功了!我必须使用stripslashes()将“\”添加到内容中(请参见)。谢谢!!!好的,成功了!我必须使用stripslashes()将“\”添加到内容中(请参见)。谢谢!!!