15

我正在开发一个 Android 应用程序,对于 API,我将请求发送到应该返回 JSON 数据的 URL。

这就是我在输出中得到的: 我的回复

我希望它显示为 Twitter 响应:

Twitter 的 JSON 响应

我假设我的响应没有被 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 App 可以正确解析它。

4

7 回答 7

17

你的问题其实很容易解决。只有在 Content-Type 标头设置为 application/json 时,Chrome JSON Formatter 插件才会格式化您的输出。

header('Content-Type: application/json');在返回 json 编码的数据之前,您需要在代码中更改的唯一一件事是在 PHP 代码中使用。

于 2014-04-20T17:09:57.583 回答
5

PHP 的json_encode函数接受第二个参数 for $options。在这里,您可以JSON_PRETTY_PRINT像在 Twitter API 中看到的那样打印它

例如

echo json_encode($my_array, JSON_PRETTY_PRINT);
于 2013-05-17T01:51:02.887 回答
3

您可以像这样将参数传递给json_encode函数:

echo json_encode($response, JSON_PRETTY_PRINT);

PHP 5.2.0 => http://php.net/manual/en/function.json-encode.php

于 2013-05-17T01:51:15.063 回答
1

你的 JSON 应该和你的第一张图片一样;一条线全部挤在一起。您可以将输出传递给 jsonlint.com,它可以帮助您找到错字/错误数据。当前所有其他答案也可以帮助您解决问题。如果您真的想这样做,它们都会为您提供不同的选项来格式化输出。

这是您在 HTML 中显示 JSON 的另一种方式。

如果您将响应包装在 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/或任何其他突出显示系统......

于 2014-04-06T15:10:25.323 回答
0

您的 JSON 响应已经处于良好状态。您正在查看的回复在 Chrome 浏览器中。这就是为什么它看起来像这样。如果您在 yoru 代码中添加以下行

var_dump($response);然后在 chrome 浏览器中右键单击 -> 查看源代码,您将看到树形结构。无论如何,您可以复制您的 JSON 响应并在此处检查有效性

当我在 chrome 中看到它时,我首先相信的是同样的事情。它也发生在我身上。

于 2013-05-17T01:58:32.337 回答
0

您所要做的就是向这样的json_encode方法添加第二个参数。

echo json_encode($response_date, JSON_PRETTY_PRINT);

或者

print json_encode($response_date, JSON_PRETTY_PRINT);

您可以访问此链接以阅读有关如何使用的更多信息json_encode

希望能帮助到你。

于 2020-03-17T10:33:09.867 回答
0

只需添加预标记->

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

echo json_encode($response, JSON_PRETTY_PRINT);

添加 pre-Tag 和 JSON_PRETTY_PRINT 后,我相信您的问题会解决。

于 2016-05-06T10:51:02.357 回答