2014-12-25 2 views
-1

웹 응용 프로그램을 실행하고 있습니다. 여기서 json이 필요합니다. 그때 어떤 기록을 추가하기 전에 일치하는 ID 종료 여부를 확인하기로 결정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" 
      } 
     } 
    ] 
} 

: 나는 다음과 같은 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'; 
       } 
      } 
     } 
    } 

나는 시험-RAN은 좋아 :

Undefined property: stdClass::$ID in 
C:\Server\wamp\www\Oweb\libs\dmanager.php on line 635 
: 여기
$Obj = new JSon('file.json');  //knows what to do 
if($Obj->ID_Exists(111)){ 
    //ok ! no problem 
}else{ 
    ////no problem 
} 

은 내가 가진 출력의 다음과 같이이 효과에, 나는 내에서 JSON 클래스를, 방법을 썼다 쌌다

내가 뭘 잘못하고 있니? json_decode() 배열 형식을 사용하고 싶지 않습니다.

답변

4

JSON 구조가 불가능합니다. Articles은 키 Article을 두 번 포함하는 단일 객체를 포함하는 배열입니다.이 방식은 작동하지 않습니다. 사용 통과 할 수

{ 
    "Articles": [ 
     { 
      "ID": 111, 
      ... 
     }, 
     { 
      "ID": 222, 
      ... 
     } 
    ] 
} 

가 :

$data = json_decode($json); 
foreach ($data->Articles as $article) { 
    if ($article->ID == ..) .. 
} 
+0

덕분에 내가 당신이 말한대로 할 것 deceze, 차 내가 빨리 다시 얻을 것이다

귀하의 구조는 할 필요가있다. –

+0

당신 덕분에 백만 명이 죽었습니다. 그것은 완벽하게 작동했습니다. 내가 그런 json 구조를 만든 이유는 단지 xml 구조체를 흉내 내고 싶다.

이다. 결코 불가능하다는 것을 깨닫지 못한다. 방금 내 지식 저장소에 추가했습니다. 다시 한 번 감사드립니다. –

+0

@OsagieOdigie 문제가 해결되면 [**이 대답 수락 **] (http://stackoverflow.com/help/someone-answers)를 잊지 마시기 바랍니다. –

관련 문제