如何使用PHP正确输出JSON数据
我正在开发一个Android应用程序,对于API,我将请求发送到一个URL,该URL应该返回JSON数据 这是我在输出中得到的: 我希望它显示为Twitter响应: 我假设我的响应没有被JSON格式化程序Chrome扩展解析,因为它的编码很糟糕,因此我的应用程序无法获得我需要的值 以下是我的PHP代码:如何使用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
<?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')在返回json编码的数据之前,在PHP代码中添加code>。只需添加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);