用php从Android读取json数据

时间:2013-01-03 16:37:13

标签: php android json

我正在尝试使用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);  
?> 

文件已正确生成但它是空的。错误是什么?

2 个答案:

答案 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