如何解析JSON对象?失败
我正在尝试在Codeigniter中使用Transendit.com服务。目前我正在尝试构建通知页面。我可以接收POST请求(采用JSON格式)并将其写入文件。奇怪的是我无法将JSON对象解析为一个PHP数组,以便我可以从中提取相关数据。当我在写入文件之前解码它时,文件是空的。如果我不把JSON代码写入文件。如何解析JSON对象?失败
这是我的控制器代码:
$result = $_POST['transloadit'];
$result = json_decode($result); // This produces empty content in file
$this->load->helper('file');
if (! write_file('./files/myfile.php', $result))
{
echo 'Unable to write the file';
} else {
echo 'File written!';
}
发送到该页面可以在这里找到的JSON对象:http://pastie.org/3056727
你想写一个stdClass的对象(解码JSON)直接写入文件 - 这是行不通的。
不解码$result
- 使用原始json字符串写入文件。此外,.json
是有效的文件格式 - 考虑使用它而不是.php
(可能更有意义)。
$result = $_POST['transloadit'];
$this->load->helper('file');
// You can test for valid json like this:
$is_valid_json = json_decode($result) !== NULL;
if (! write_file('./files/myfile.json', $result)) {
echo 'Unable to write the file';
}
else {
echo 'File written!';
}
好的。但是我将它写入文件的原因只是为了能够“看到”结果。我正在处理的页面是“隐藏”页面,不显示任何信息。它将用来自JSON对象的信息更新数据库。我的主要目标是从JSON对象中提取相关数据。我怎样才能做到这一点?谢谢! – 2011-12-22 11:19:14
您可以像访问其他对象一样访问它。假设'$ encoded = json_decode($ result)'。所以'$ decode-> message'应该返回'“程序集已经成功完成了。”'因为你实际上不仅仅有键/值对,你需要弄清楚*你想如何存储它数据库。我不能为你做出这个决定,也没有必要的信息去做。 – 2011-12-22 11:21:50
我不知道为什么它不适合你。在全面爆发时打开错误报告,并使用像var_dump()这样的基本调试技术。对我来说在这里工作得很好:http://codepad.org/V9ygBWgQ – 2011-12-22 11:28:04
它只是一个json对象,直到你解码它,然后它是一个PHP stdclass对象。 – 2011-12-22 11:13:57
我的主要目标是从这个JSON对象中提取数据并将其写入数据库。我怎样才能做到这一点? (写入文件只是为了让我看到输出)。 – 2011-12-22 11:20:02