如何使用PHP正确输出JSON数据

如何使用PHP正确输出JSON数据,php,android,json,Php,Android,Json,我正在开发一个Android应用程序,对于API,我将请求发送到一个URL,该URL应该返回JSON数据 这是我在输出中得到的: 我希望它显示为Twitter响应: 我假设我的响应没有被JSON格式化程序Chrome扩展解析,因为它的编码很糟糕,因此我的应用程序无法获得我需要的值 以下是我的PHP代码: <?php $response = array(); if (isset($_POST['name']) && isset($_POST['price']) &am

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

这是我在输出中得到的:

我希望它显示为Twitter响应:

我假设我的响应没有被JSON格式化程序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);

}

?>
<pre><?php  ---you`r code---     ?> </pre>
PHP函数接受第二个参数,用于
$options
。在这里,您可以使用
JSON\u PRETTY\u PRINT
来打印它,就像您在Twitter API中看到的那样

例如


您可以将参数传递给
json\u encode
函数,如下所示:

echo json_encode($response, JSON_PRETTY_PRINT);

PHP5.2.0=>

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

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


当我在chrome上看到它时,我也相信这一点。这也发生在我身上。

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

这里是另一种在HTML中显示JSON的方法

如果用HTML
标记包装响应,则将保留空白格式

例如,我使用jQuery获取一些json数据,在jQuery中获取json对象并将其直接放入格式化的

<pre class="output" style="text-align:left; width:80%; margin:0 auto">[ results ]</pre>
这将获取您的json返回,使用HTML的空格对其进行格式化
可以用来格式化它,就像您希望看到的那样


如果您想对json进行颜色编码。。。您可以使用或任何其他突出显示系统…

您的问题实际上很容易解决。Chrome JSON格式化程序插件仅在内容类型头设置为application/JSON时格式化输出

代码中唯一需要更改的是使用
header('Content-Type:application/json')

只需添加pre标记-->


在添加pre-Tag和JSON\u-PRETTY\u-PRINT之后,我相信您的问题会得到解决。

您所要做的就是像这样向
JSON\u-encode
方法添加第二个参数

print json_encode($response_date, JSON_PRETTY_PRINT);

您可以访问了解有关如何使用
json\u encode
的更多信息


希望有帮助。

可能是输入错误,但您的插入查询以
INSER
开头。如果您发布实际结果JSON,而不是图像,则会非常有用。我不太熟悉PHP输出的JSON,但我很好奇,我能在第二个屏幕截图中看到“原始”和“解析”函数,这不是某个javascript函数在实际格式化输出吗?如果你做了一个漂亮的打印,这会不会增加你的页面数据大小,而这不应该是用户想要的?@ChorWaiChun这是JSON格式的Chrome扩展。显然,JSON_pretty_打印只在PHP 5.4+上可用,服务器运行5.2。你说得对!我发现这个类非常漂亮。我没有测试它,但你可以从中得到启发。我知道这个问题特别指出了chrome等,但我发现要在FF中实现这一点,我必须使用
header('Content-Type:application/json')而不是
标题('Content-Type','application/json')(用冒号替换逗号)是的,我打错了。我刚才才注意到。谢谢!;)@OscarSwanros,你能把问题标记为已解决吗?谢谢!:)
<pre><?php  ---you`r code---     ?> </pre>
echo json_encode($response, JSON_PRETTY_PRINT);
echo json_encode($response_date, JSON_PRETTY_PRINT);
print json_encode($response_date, JSON_PRETTY_PRINT);