我正在测试运行Web应用程序 需要json的地方。我有以下json 结构:
{
"Articles": [
{
"Article": {
"ID": 111,
"title": "Idiot",
"author": "Moron",
"pubDate": "11/2/14",
"summary": "bla bla bla"
},
"Article": {
"ID": 222,
"title": "wisdom",
"author": "wise one",
"pubDate": "11/2/15",
"summary": "ha ha ha"
}
}
]
}
然后我决定在添加之前检查匹配的ID是否退出 任何记录。为此,我写了一个方法,将其封装在其中 一个JSon类如下:
public function ID_Exists($ID){
$file = file_get_contents($this->FileName, true);
$data = json_decode($file, false); //get json in array string format
foreach($data as $child){
foreach($child as $item){
if($item->ID == $ID){
echo 'Exists';
}else{
echo 'Non Existent';
}
}
}
}
我测试它就像:
$Obj = new JSon('file.json'); //knows what to do
if($Obj->ID_Exists(111)){
//ok ! no problem
}else{
////no problem
}
这是我得到的输出:
Undefined property: stdClass::$ID in
C:\Server\wamp\www\Oweb\libs\dmanager.php on line 635
我做错了什么?我不想使用该数组 json_decode()的格式。
答案 0 :(得分:4)
您的JSON结构是不可能的。 Articles
是一个数组,其中包含一个包含键Article
两次的单个对象 - 这不起作用。
您的结构需要:
{
"Articles": [
{
"ID": 111,
...
},
{
"ID": 222,
...
}
]
}
您可以使用哪个遍历:
$data = json_decode($json);
foreach ($data->Articles as $article) {
if ($article->ID == ..) ..
}