2014-12-09 3 views
0

방금 ​​내가 여기에서 찾을 수있는 약 10 가지 다른 방법을 시도하면서 몇 시간을 보냈습니다. 그냥 그것을 깰 수 없습니다.PHP에서 원격 JSON 파일의 단일 항목 읽기, 저장 및 재사용

난 내가하고 관리 한 일부 3 일을, 할 노력하고있어 기본적으로

...

1) 읽기 및 수행 원격 JSON 파일() 2) 하나 개의 항목을 변환을 가져 반환 된 데이터에서 PHP 문자열 3) 나머지 스크립트에서이 문자열을 사용합니다 (이 방법은 알고 있습니다).

내가 해결할 수없는 두 번째 단계 일뿐입니다. 나는 그것을 가져 와서 배열을 덤프 (하지만 난 그것으로 잘못된거야 곳이있을 수 있습니다 내가 확신하려면 다음을 사용하고

{ 
"data": { 
    "admin": "[email protected]", 
    "host": "00.000.000.000", 
    "location": "Cloud", 
    "server_id": "Server01", 
    "server_start": "Tue, 28 Oct 2014 21:39:01 +0100", 
    "server_start_iso8601": "2014-10-28T21:39:01+0100", 
    "source": [ 
     { 
      "listenurl": "http://00.000.000.000:9000/live", 
      "server_description": "Description here", 
      "server_name": "Name goes here", 
      "server_url": "http://www.foobar.com" 
     } 
    ] 
} 
} 

: 여기

내 JSON 파일의 예입니다 전체 배열을 인쇄 중입니다.)

$url = 'http://www.foobar.com/JSON.txt'; 
$result = file_get_contents($url); 
var_dump(json_decode($result, true)); 

나는 JSON 파일의하지만 전혀 성공만을 "서버 _" 부분을 표시하는 방법을 많이 시도했습니다. 나는 그들이 틀린 것처럼 내가 시도한 모든 다른 방법을 게시하는 것을 괴롭히지 않을 것이다.

"server_name"의 내용을 잡고 PHP 스크립트 ($ serverNAME)에 할당하면 나머지 스크립트에서이 문자열을 사용할 수 있습니다.

도움을 주시면 감사하겠습니다.

답변

0
그것의 외모에서

이 같은 멀리 얻을 수 있어야합니다 :

$data = "Your JSON input"; 
$decoded = json_decode($data); 
// Take a look at your data: 
var_dump($decoded); 
// Keep in mind that source is an array and will be 
// returned as one but it contains objects. 
$server_name = $decoded->data->source[ 0 ]->server_name; 
// Note that json_decode will return an object by default 
// you may pass in a boolean true as second argument to 
// make it return an assoc array. 
$decoded = json_decode($data, true); 
$server_name = $decoded[ 'data' ][ 'source' ][ 0 ][ 'server_name' ]; 

또는 이전 시도 접근 방법의 하나입니다?

입력 내용을 an online version of json_decode에 전달하고 반환되는 내용을 확인한 다음 확인하십시오. 더하기 var_dump와 print_r은 머리를 감쌀 수없는 데이터 구조를 다룰 때 가장 친한 친구입니다.

+0

모든 사람이 정답을 제공했음을 모두에게 감사드립니다. 나는 지금 그것을 완전히 이해할 수있다. 내가 낚시하기 전에 다른 답변 및 튜토리얼에서 코드의 관련 비트가 있다고 생각했지만 아무도 작동하지 않았습니다. 그것의 기초에 아래로 껍질을 벗기 십시요 나는 그것을 지금 완전하게 얻는다! 다시 고마워요 :) – Grant

+1

그리고 크리스마스에 내 질문에 투표 한 사람에게 큰 bah humbug도! tut tut tut – Grant

1
denoir의 대답에 유사

,하지만 당신의 마음에 드는 경우 배열 방법을 사용하여 :

$json = json_decode($result, true); 
$serverName = $json['data']['source'][0]['server_name']; 
echo $serverName; 
1
$url = 'http://www.foobar.com/JSON.txt'; 
$result = file_get_contents($url); 
$decoded = json_decode($test, true); 
$server_name = $decoded['data']['source'][0]['server_name']; 

'소스', 배열로 반환됩니다 당신은 액세스에 [0] 인덱스를 필요로하므로 그것.

관련 문제