2014-06-05 4 views
1

JSON 파일을 가져오고 (루프를 사용하여) JSON 파일의 각 객체에 대한 요소를 만드는 Wordpress 플러그인을 만들려고합니다. 그러나이 JSON 파일은 내가 보지 못했던 형식으로되어 있으므로 데이터를 가져 오는 방법을 찾는 데 어려움을 겪고 있습니다. 파일의 시작과 끝은 배열 대괄호로 표시됩니다.기본 json_decode with PHP

여기는 JSON file입니다.

그래서 첫 번째 개체는 다음과 같습니다

$json_feed_url = 'http://earthquake-report.com/feeds/recent-eq?json'; 
$args = array('timeout' => 120); 
$json_feed = wp_remote_get($json_feed_url, $args); 
$earthquake_data = json_decode($json_feed); 

어떻게 실제로이 당겨 않고 있지만, 그것을 인쇄 :

[{ 
    "title": "Moderate earthquake - Fiji Region on June 5, 2014", 
    "magnitude": "4.5", 
    "location": "FIJI REGION", 
    "depth": "334", 
    "latitude": "-15.63", 
    "longitude": "-176.92", 
    "date_time": "2014-06-05T04:17:31+00:00", 
    "link": "http://earthquake-report.com/2014/06/05/moderate-earthquake-fiji-region-on-june-5-2014/" 
}, 

그래서 나는이있어? $ earthquake_data-> title을 사용할 수는 없으며, 이름이 없기 때문에 인덱스를 사용하여 각 객체를 가져올 수있는 방법이 필요합니다. 0 인덱스에서 시작하여 거기에서부터 시작해야합니까?

echo $earthquake_data[0]; 
echo $earthquake_data[0]{$countervariable->title}; 

앞에서 설명한대로이 문서의 마지막 25 개 객체 각각의 정보를 가져 오려고합니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

'foreach ($ earthquake_data as $ earthquake_data_single) {echo $ earthquake_data_single-> title; }'. – h2ooooooo

답변

2
$json_feed_url = 'http://earthquake-report.com/feeds/recent-eq?json'; 
$args = array('timeout' => 120); 
$json_feed = wp_remote_get($json_feed_url, $args); 
$earthquake_data = json_decode($json_feed); 

// $earthquake_data should be an array 
foreach ($earthquake_data as $obj) { 
    var_dump($obj); 
    // example 
    echo $obj->title; 
} 
+0

흠 ... 작성한대로 foreach 함수를 사용하면 다음과 같이 나타납니다. 경고 : foreach()에 잘못된 인수가 제공되었습니다. 이것은 실제로 배열이 아니기 때문에 일반적입니다. 맞습니까? 실제로 배열로 만들어지지 않는 것으로 보입니다. 작은 테스트 함수를 만들었습니다. if (! is_array ($ earthquake_data)) { echo '

IMAGE NOT ARRAY!

'; } 말할 필요도없이 "배열이 아닙니다!"라고 인쇄되었습니다. 어떤 아이디어? –

+0

@thomasshellberg'json_decode()'가'object'를 반환하기 때문에 false를 반환합니다. 'array'를 원한다면'json_decode ($ json_feed, true)'와 같은 것을 쓸 것입니다. (두번째 파라미터'true'를보십시오) – Darren

+1

@Darren False. JSON 배열은 여전히 ​​배열 (0, 1, 2, 3 .. 키)입니다. 그러나 명명 된 키는 객체 속성입니다. – h2ooooooo

0

방금 ​​wp를 사용하지 않았으므로 파일을 다운로드했습니다.

트릭은 다음 PHP는 배열에 모든 개체를 변환 (, 사실데이터) 'json_decode를 사용하는 것입니다. 'foreach'루프만으로도 인쇄 할 수 있습니다.

테스트 된 샘플 코드는 다음과 같습니다.

<?php 
$dc = json_decode(file_get_contents('earthquake.json'), true); 

foreach ($dc as $details) { 
    echo '<strong>', $details['title'], '</strong><br />'; 
    foreach($details as $name => $value) { 
     echo $name, ' => ', $value, '<br />'; 
    } 
} 
+0

도움을 주셔서 감사합니다! 이 작업은 파일을 .json 파일로 다운로드하여 로컬에서 사용하는 방식으로 작동합니다. 나는 또한 'earthquake.json'을 피드 URL로 변경했으며 잘 작동했습니다. 이전에했던 것처럼 wp_remote_get 함수를 사용하면 작동하지 않습니다. 나는 그것이 전체 시간에 문제가되었다고 생각합니다. 다시 한 번 감사드립니다! –

+0

@thomas, 기꺼이 도와주세요. –