我正在尝试使用php服务器从Android的反编译应用程序中读取数据。我使用wireshark
来了解应用程序发送的数据类型,结果是:
{“initType”:“第一次”,“参数”:true,“details”:................}
我尝试捕获这些数据并将其插入到具有此php代码的文件中:
<?php
$json = $_POST["initType"];
$decoded = json_decode($json, TRUE);
if ($decoded === FALSE) {
throw new Exception('Bad JSON format.');
}
$file_handle = fopen('tmp.json', 'w');
fwrite($file_handle, $decoded);
fclose($file_handle);
?>
文件已正确生成但它是空的。错误是什么?
答案 0 :(得分:0)
因为$decoded
是一个数组,所以使用循环将其写入文件或将编码的JSON写入文件($json
)。试试这个:
fwrite('tmp.json', print_r($decoded, TRUE));
或:
file_put_contents('tmp.json', print_r($decoded, TRUE));
更新(根据您的意见):
如果你运行print_r($decoded)
并且它什么都没打印,那么传入的JSON对象的解码过程就会出现问题。我建议检查它以确保它的格式正确。 JSON格式是一项严格的业务,如果您缺少双引号或括号,将停止您的最终目标。首先回复$json
($_POST["initType"]
)并将格式与在线发布的示例进行比较(仅限Google“json格式化”)。我可以告诉你,有一点对我来说很突出:"parameters":true
(来自你上面的例子)。我强烈怀疑密钥true
应该是双引号。如果你肯定JSON变量在语法上是正确的,我认为我不会有任何帮助。一旦你做对了就用json_decode()
生成一个非常直接的数组。
答案 1 :(得分:0)
根本不解码json - 这只会带来尝试序列化他答案中提到的数组的问题。
立即将json内容写入文件:
fwrite($file_handle, $json);
此外,虽然我不是PHP专家,但您似乎错误地访问了帖子请求的正文。请参阅following post。