json php를 이용해 출력하려고하는데 에러가...

json php를 이용해 출력하려고하는데 에러가...

QA

json php를 이용해 출력하려고하는데 에러가...

본문

아래가 json 데이타입니다.

{
    "rsp": {
        "_content": {
            "folder": {
                "folderId": "4c3ba964-60c3-4349-94d0-ff86db2d47c9",
                "username": "ferrogate",
                "name": "Cool stuff",
                "description": "Stuff I have collected",
                "items": 0,
                "created": "2009-07-12T19:52:15.000Z"
            }
        },
        "stat": "ok"
    }
}

 

이걸 folderId만 출력하려고 해서 아래와 같이 php로 작업을 했습니다.


<?php
    $jsonData = file_get_contents("json.json");
    $json = json_decode($jsonData, true);
    echo '<h3>Employee Data</h3>';
    $output = "";
    foreach($json['rsp'] as $rsp)
    {
        $output.="ID :".$rsp['folderId']. "<br />";
    }
    echo $output;
?>

 

그런데 아래와 같은 에러 메시지가 나오네요...

 

Warning: Illegal string offset '_content' in /home/joongang/public_html/json.php on line 11
 

 

어떻게하면 제대로 출력을 할 수 있을까요?

 

감사합니다.

이 질문에 댓글 쓰기 :

답변 2

현재 foreach($json['rsp'] as $rsp)  이부분으로는 _content아래부분이 나오니까 folder에 대한부분만 출력이 됩니다.

해당부분은 $rsp['folder']['folderId'] 에 배열이 존재하므로 

$rsp['folder']['folderId']  이러한 형태로 확인을 해야 보이겠지요

그리고 illegal string offset 이런 오류 같은경우

배열부분에 하나하나 체크하게 끔넣어줘야 오류가 발생하지 않습니다.

if(isset($rsp['folder']))

이런식으로 조건을 걸어주셔야 오류가 발생하지 않습니다.

 

그래서 소스를 정리하자면


<?php
    $jsonData = file_get_contents("json.json");
    $json = json_decode($jsonData, true);
    echo '<h3>Employee Data</h3>';
    $output = "";
    //print_r($json);
    foreach($json['rsp'] as $rsp)
    {
        if(isset($rsp['folder']))
            $output.= $a." - ID : ".$rsp['folder']['folderId']."<br />";
    }
    echo $output;
?>

감사합니다.  해결했습니다. 그런데 질문 2가지만 더 드려도 될까요?

1. 주신 소스에 보면 $a. 변수가 있는데 이건 어떤의미인가요?

2. json 데이타에 보면  아래 처럼 되어있는데 중간에있는 _content는 folder 안에있는 내용을 출력할때 언급할 필요가 없는건가요?

답변 감사합니다. :)

"rsp": {
        "_content": {
            "folder": {

1)어디에서 문제가 생기는지 보려고 숫자 넣은겁니다.
그냥 무시하셔도 됩니다.

2)위 배열을 보시면
rsp[_content]
rsp[_content][folder]
rsp[_content][folder][folderId]
rsp[_content][folder][username]
rsp[_content][folder][name]

이러한 구조의 배열이 됩니다.
이건 배열구조를 잘 보시면 이해되리라 봅니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 40
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT