0

phpサーバーを使用してAndroidの逆コンパイルされたアプリケーションからデータを読み取ろうとしています。以前wiresharkは、アプリケーションが送信するデータの種類を理解していましたが、その結果は次のとおりです。

{"initType": "初回"、 "パラメータ":true、 "詳細":................}

このデータをキャプチャして、この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);  
?> 

ファイルは正しく生成されていますが、空です。エラーは何ですか?

4

2 に答える 2

0

jsonをまったくデコードしないでください。これは、burmatが彼の回答で言及した配列をシリアル化しようとする問題を引き起こすだけです。

jsonコンテンツをすぐにファイルに書き込みます。

fwrite($file_handle, $json);

また、私はPHPの専門家ではありませんが、POSTリクエストの本文に誤ってアクセスしているようです。次の投稿を参照してください。

于 2013-01-03T16:47:14.780 に答える
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フォーマット」のみ)。私にとって際立っていることの1つは、"parameters":true(上記の例から)です。キーは二重引用符で囲む必要があるのではないかと強く疑っていtrueます。JSON変数が構文的に正しいと確信している場合は、これ以上役に立たないと思います。json_decode()正しく理解したら、非常に単純な配列を作成するために使用します。

于 2013-01-03T16:45:56.390 に答える