2013-04-05 2 views
1

Im을 작성한 다른 php-api에서 JSONstring을 가져 오는 PHP 웹 사이트를 작성했습니다. 문자열은 다음과 같습니다 : 필자는 여기에 배열을 사용하지 않는 JSONarray하지만 임에서 정보를 얻는 방법에 대한 답변을 많이 발견배열이 아닌 PHP에서 JSON 객체 가져 오기

{ 
    "result": "true", 
    "results": { 
     "20": { 
      "id": "20", 
      "desc": "a b ct tr", 
      "active": "1", 
      "startdate": "2013-04-03", 
      "starttimehour": "18", 
      "starttimemin": "0", 
      "enddate": "2013-04-03", 
      "endtimehour": "22", 
      "endtimemin": "0", 
      "creator": "a" 
     }, 
     "21": { 
      "id": "21", 
      "desc": "test", 
      "active": "0", 
      "startdate": "2013-04-04", 
      "starttimehour": "18", 
      "starttimemin": "0", 
      "enddate": "2013-04-04", 
      "endtimehour": "22", 
      "endtimemin": "0", 
      "creator": "a" 
     } 
    } 
} 

. 그래서 질문은 : 20, 21 등으로 레이블 된 객체를 어떻게 얻을 수 있습니까? (이 숫자는 서버에서 생성하므로 어떤 객체가 반환 될지 알 수 없습니다).

아니면 api가 JSON을 배열로 반환하는지 다시 작성해야합니다. 이런 식으로 뭔가 :

{"result"="true", "results":[{...},{...},{...}]} 
+0

PHP와 JS/JSON은 te를 사용합니다. rm "배열"다른 것들을 설명합니다. PHP의 "배열"은 숫자 배열 (JavaScript의'[]')과 연관 배열 (JavaScript의'{}')을 모두 포함합니다.'json_decode ($ input)'을 사용하면 객체를 얻을 수 있습니다.'json_decode ($ input, true)'를 사용하면 연관 배열을 얻을 수 있습니다. 나는 결과 값을 숫자 배열로 반환하는 것을 추천한다. – DCoder

+0

모든 답변을 주셔서 감사합니다. json 파싱에 도움이되었습니다. 다른 PHP 페이지에 또 다른 문제가있었습니다. json_decode()가 NULL을 반환하는 문자열에 항목을 추가하는 것처럼 보입니다. S –

답변

2
$json = json_decode($json_string, True); 
foreach($json['results'] as $key => $value) { 
    // access the number with $key and the associated object with $value 
    echo 'Number: '.$key; 
    echo 'Startdate: '.$value['startdate']; 
} 
+1

$ json [결과]]을 $ json-> 결과로 변경하지만 코드가 잘못되었습니다. 어쨌든 작동합니다. :) – Alex

+1

맞아, 나는 모든 구문을 혼합하여 혼란스러워진다. 편집, 연관 배열에 TRUE 추가 :-( – Imperative

0

나는 당신이 당신의 문제를 해결해야하므로 기본적으로

curl http://someapi.somedomain/someresource/ -X POST -d @data.json 

처럼, 어떤 매개 변수없이

$data = file_get_contents('php://input'); 
$object = json_decode($data); 
print_r($object); 

를 POST로 JSON을 받고 있다고 가정합니다. $ object는 여러분이 게시하는 json 객체가 될 것입니다.

0

JSON 응답을 문자열로 가져옵니다. 이것이 JSON이 작동하는 방식입니다. 쉽게 액세스 할 수있는 형식 및 구조로 데이터를 "변환"하려면 json_decode()이라는 PHP 함수를 사용할 수 있습니다.

기능을 사용할 때 두 가지 선택이 -

  1. 가 배열로 데이터를 변환합니다. json_decode($jsonString,true)
    이 방법을 사용하면 연관 배열에서와 같이 데이터에 액세스 할 수 있습니다. $jsonArray['results']['21']

  2. 데이터를 개체로 변환합니다. 당신은 그것을 통해 루프 수
    $num = 21;
    $jsonObj->results->$num

0

먼저 당신이 문자열 ($ 문자열)을 디코딩하고 모든 속성을 얻을 -이 방법 json_decode($jsonString)
, 당신은 데이터를 통과 할 객체 표기법을 사용합니다 개체의 프로퍼티에 접근하는 것은 [ 'prop'] 대신에 -> prop를 사용한다는 것을 기억하십시오. 이렇게하면 배열 방식으로 처리 할 필요가 없습니다.

$jsoned = json_decode($string); 
    foreach($jsoned->results as $o) { 
     foreach($o as $key => $value) { 
      echo "The key is: ".$key." and the value is: ".$value."<br>"; 
     } 
    } 

작업을 예를 들어 무엇을 인쇄합니다 :

키는 다음과 같습니다 ID와 값이 20

키는 다음과 같습니다 내림차순 가치는 다음과 같습니다 순이 코네티컷 그럴 키가

: 활성 값은 다음과 같습니다. 1

등 ...

관련 문제