Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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_Angularjs - Fatal编程技术网

Php JSON:所有值都转换为字符串

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,

我使用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, 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()将“\”添加到内容中(请参见)。谢谢!!!