有此JSON:Symfony2的Json的解析与日期
在线观看: http://www.jsoneditoronline.org/?id=97bbcb19871e89ff0702f8547589a688
试图解析出来,但有些字段名是日期,所以我不知道该怎么做。
我想分析并存储在数据库(MongoDB中仍然存在):
- 日期
- 引用(neo_reference_id)
- 名
- 速度(kilometers_per_hour)
- 是危险的(is_potentially_hazardous_asteroid )
试着d所以我可以获得参考,名称,速度和危险性:
$data = json_decode($response->getBody(), true);
foreach($data['near_earth_objects'] as $neos)
{
foreach($neos as $item)
{
$output->write($item['name']);
}
}
如何获取相应的日期字段?
在Symfony2中解析JSON数据的最佳实践是什么?
感谢,
更新1:
尝试作为半疯狂已经回答了:
$jd = new JsonDecode();
$neo_obj = $jd->decode($response->getBody(),"json");
foreach($neo_obj->near_earth_objects as $date => $object) {
// store $date here
$output->write($date);
foreach($date as $objects) {
$links = $objects['links'];
$neo_ref_id = $objects['neo_reference_id'];
$output->write($links);
$output->write($neo_ref_id);
}
}
$日期是存在的,但在第二次看它做出警告,并没有得到显示。
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: Invalid argument supplied for foreach()
任何提示?
感谢,
更新2:
该做的。
可以改进以获得更好的性能和代码可读性:)?
$jd = new JsonDecode();
$neo_obj = $jd->decode($response->getBody(),"json");
foreach($neo_obj->near_earth_objects as $date => $object) {
$output->writeln("date:".$date);
foreach($neo_obj->near_earth_objects as $object1) {
foreach($object1 as $object2)
{
$output->writeln("name:".$object2->name);
$output->writeln("neo_reference_id:".$object2->neo_reference_id);
$output->writeln("is_potentially_hazardous_asteroid:".$object2->is_potentially_hazardous_asteroid);
foreach($object2->close_approach_data as $object3)
{
$i=0;
foreach($object3->relative_velocity as $object4)
{
if($i===1)
{
$output->writeln("speed:".$object4);
}
$i=$i+1;
}
}
}
}
}
Thanks @Half Crazed !!!根据您的建议,我更新了Update 1的问题。不幸的是,第二个循环存在问题。有任何想法吗? –
想通了。你能看到我的更新2,也许建议改进? –
@android_dev你不需要做foreach($ neo_obj-> near_earth_objects as [...]){'两次。您可以删除内部的'foreach',而是仍然在'$ object'上循环。 '$ object'将成为'near_earth_objects [date]'数组中的所有内容。如果你不确定是否应该访问一个数组项或对象属性,例如'$ array ['key']'vs'$ obj-> prop',那么你应该随时'var_dump($ var) –