Androidアプリを開発しています。APIの場合、JSONデータを返すURLにリクエストを送信しています。
これは私の出力で得ているものです:
そして、私はそれをTwitterの応答として表示したいと思います:
JSON Formatter Chrome=拡張機能によってエンコードされていないため、応答が解析されていないため、アプリが必要な値を取得できません。
ここに私のPHPコード:
<?php
$response = array();
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description']))
{
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['decription'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("INSER INTO products(name, price, description) VALUES('$name', '$price', '$description')");
if ($result) {
$response["success"] = 1;
$response["message"] = "Product successfully created.";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "Oops! An error occurred!";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
JSON Formatterとmy Android AppがJSONデータを正しく解析できるように、JSONデータを正しく表示する方法を知りたいです。
あなたの問題は実際には非常に簡単に解決できます。 Chrome JSON Formatterプラグインは、Content-Typeヘッダーがapplication/jsonに設定されている場合にのみ出力をフォーマットします。
コードで変更する必要があるのは、jsonでエンコードされたデータを返す前にPHP=コードでheader('Content-Type: application/json');
を使用することだけです。
PHPの json_encode 関数は、$options
の2番目の引数を取ります。ここでは、JSON_PRETTY_PRINT
を使用して、Twitter APIで表示されるように印刷できます。
例えば。
echo json_encode($my_array, JSON_PRETTY_PRINT);
次のようにjson_encode
関数に引数を渡すことができます。
echo json_encode($response, JSON_PRETTY_PRINT);
PHP 5.2.0 => http://php.net/manual/en/function.json-encode.php
JSONは最初の画像のようでなければなりません。すべてが1行にまとめられました。出力をjsonlint.comに渡すと、タイプミス/不良データを見つけるのに役立ちます。現在のその他すべての回答も、問題の解決に役立ちます。あなたが本当にそれをしたいのであれば、それらはすべてあなたに出力をフォーマットするための異なるオプションを提供します。
JSONをHTMLで表示する別の方法を次に示します。
応答をHTML <pre>タグでラップする場合、空白形式を保持します。
たとえば、jQueryを使用してjsonデータを取得し、jQueryでjsonオブジェクトを取得し、フォーマットされた<pre>に直接配置します
<pre class="output" style="text-align:left; width:80%; margin:0 auto">[ results ]</pre>
私が使う
$('.output').html( JSON.stringify(data,null,4) );
これにより、jsonが返され、HTML <pre>を使用してスペースでフォーマットし、見たいようにフォーマットできます。
Jsonを色分けしたい場合は、 http://prismjs.com/ または他の強調表示システムを使用できます...
Laravel
ヘッダーheader('Content-Type: application/json');
またはjson PRETTY_PRINT
動作しませんでしたか?
少しのCSSが必要ですwhite-space: pre-wrap;
Jsonをコントローラーまたはルーターから空白ページにダンプしていますか?
Route::get('/print-json', function (Request $request) {
echo '<style>body{ white-space: pre-wrap; }</style>';
echo json_encode([
'IP' => $request->getClientIp(),
'Route' => $request->route(),
], JSON_PRETTY_PRINT);
});
出力:
{
"IP": "127.0.0.1",
"Route": {
"uri": "showArray",
"methods": [
"GET",
"HEAD"
],
"action": {
"middleware": "web",
"uses": {},
"namespace": "App\\Http\\Controllers",
"prefix": null,
"where": []
},
"isFallback": false,
"controller": null,
"defaults": [],
"wheres": [],
"parameters": [],
"parameterNames": [],
"computedMiddleware": [
"web"
],
"compiled": {}
}
}
事前タグを追加するだけ->
<pre><?php ---you`r code--- ?> </pre>
そして
echo json_encode($response, JSON_PRETTY_PRINT);
pre-TagとJSON_PRETTY_PRINTを追加すると、問題が解決するはずです。
JSONレスポンスはすでに良好な状態です。表示している応答はChromeブラウザです。そのため、そのように見えます。以下の行をyoruコードで追加すると
var_dump($response);
を右クリック->ソースを表示chrome brower、ツリー構造が表示されます。とにかくJSON応答をコピーして有効性を確認できます ここで
chromeで見たとき、私が最初に信じていたもの。それは私にも起こります。