我想尝试使用公司的API。我想把他们的数据放到我的数据库中。但是我遇到了一个问题。 API有一个名为" venue.country"的JSON对象。但出于某种原因,我不能在阵列中使用点?
以下是代码:
def banded_txns(s):
return ((s >= 900.00) & (s < 1000.00)).count()
\其他一切都在PHP中运行 这是JSON的一部分:
foreach ($data[1]['hits']['hits'] as $row) {
$statement->execute(array(
"name" => $row['fields']['name'][0],
"date" => $row['fields']['start'][0],
"lang_long" => "test",
It is this one! -> "country" => $row['fields']['venue.country'][0],
"genres" => $row['fields']['genres'][0],
"desc" => $row['fields']['description'][0],
"logo" => $row['fields']['logo'][0],
"header_pic" => $row['fields']['header'][0]
));
}
我怎样才能让它发挥作用?我可以使用&#34; explode&#34;方法
这是完整的JSON: https://hugo.events/genre/pop/next/200/120
感谢。
编辑:
即使答案@Prototype Chain给出了这个错误:venue.country: [
"Nederland"
],
答案 0 :(得分:1)
考虑到您的示例JSON数据,此代码可以正常工作:
$string = <<<EOT
{INSERT YOUR JSON STRING HERE}
EOT;
$json = json_decode( $string, true );
echo $json[1]['hits']['hits'][0]['fields']['venue.location'][0] . "\n";
echo $json[1]['hits']['hits'][0]['fields']['venue.location'][1] . "\n";
答案 1 :(得分:0)
在没有看到JSON数据的全部内容的情况下调试有点困难,但是,过去当我从奇怪地格式化它的源解析JSON或XML数据时遇到困难时,我发现在解析数据之前对数据执行预处理str_replace()很有用。
所以这样的事情对你有用:
$input = some_function_to_get_string_data_from_api();
$input = str_replace( "venue.country", "venuecountry", $input );
$json = json_encode( $input );
它不是一个优雅的解决方案,如果您处理需要修改的大量字段,但如果您只处理单个字段或两个字段,它会很快崩溃这给你带来麻烦,它可能是一个快速而肮脏的补丁。
答案 2 :(得分:0)
代码工作正常。调试后我发现,数组元素$ data [1] [&#39;点击&#39;] [&#39;点击&#39;] [50]和$ data没有键/索引venue.country [1] [&#39;命中&#39;] [&#39;命中&#39;] [51]。由于没有索引,因此抛出通知。
您可以添加@before变量以禁止通知,或者在索引出现时检查条件。
"country" => @$row['fields']['venue.country'][0],
"country" => isset($row['fields']['venue.country']) ? $row['fields']['venue.country'][0] : '',
//运行此代码进行测试。
error_reporting(E_ALL);
ini_set('display_errors', 1);
$jsondata = file_get_contents('https://hugo.events/genre/pop/next/200/100');
$data = json_decode($jsondata, true);
foreach ($data[1]['hits']['hits'] as $row) {
// echo $row['fields']['name'][0].'=>'.@$row['fields']['venue.country'][0].'<br/>';
$array[]= array(
"name" => $row['fields']['name'][0],
"country" => isset($row['fields']['venue.country']) ? $row['fields']['venue.country'][0] : ''
);
}
echo "<pre>";
print_r($array);
答案 3 :(得分:-2)
希望这会成功。
$row['fields']['venue']['country'][0]