Как правильно выводить данные JSON с помощью PHP - программирование
Подтвердить что ты не робот

Как правильно выводить данные JSON с помощью PHP

Я разрабатываю приложение для Android, и для API я отправляю свои запросы на URL-адрес, который должен возвращать данные JSON.

Это то, что я получаю в своем выпуске: My response

И я бы хотел, чтобы он отображался как ответ Twitter:

Twitter's JSON response

Я предполагаю, что мой ответ не обрабатывается расширением 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, чтобы JSON Formatter и мое приложение Android могли правильно разобрать его.

4b9b3361

Ответ 1

Ваша проблема на самом деле очень легко решить. Плагин Chrome JSON Formatter только форматирует ваш вывод, если заголовок Content-Type установлен в application/json.

Единственное, что вам нужно изменить в вашем коде, - это использовать header('Content-Type: application/json'); в вашем PHP-коде, прежде чем возвращать json-закодированные данные.

Ответ 2

PHP json_encode принимает второй аргумент, для $options. Здесь вы можете использовать JSON_PRETTY_PRINT для печати, как вы видите в API Twitter.

например.

echo json_encode($my_array, JSON_PRETTY_PRINT);

Ответ 4

Ваш JSON должен быть как ваш первый образ; Все в одной линии хлынули вместе. Вы можете передать свой результат на 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/ или любую другую систему подсветки...

Ответ 5

Ваш ответ JSON уже в хорошей форме. Ответ, который вы просматриваете, находится в браузере Chrome. Вот почему это выглядит так. Если вы добавите строку ниже в коде yoru

var_dump($response);, а затем rightclick → просмотреть источник в хромовом браустере, вы увидите древовидную структуру. В любом случае вы можете скопировать ответ JSON и проверить действительность здесь

То же самое, что я сначала верю, когда увидел его в хроме. Это случается и со мной.

Ответ 6

Просто добавьте pre Tag →

<pre><?php  ---you`r code---     ?> </pre>

и

echo json_encode($response, JSON_PRETTY_PRINT);

после добавления pre-Tag и JSON_PRETTY_PRINT Я уверен, что ваша проблема будет решена.

Ответ 7

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": {}
    }
}