테스트 사이트 - 개발 중인 베타 버전입니다

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

바흐 7년 전 조회 2,373

아래가 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로 작업을 했습니다.

</p>

<p><?php

    $jsonData = file_get_contents("json.json");

    $json = json_decode($jsonData, true);</p>

<p>    echo '<h3>Employee Data</h3>';</p>

<p>    $output = "";</p>

<p>    foreach($json['rsp'] as $rsp)

    {

        $output.="ID :".$rsp['folderId']. "
";

    }

    echo $output;

?></p>

<p>

 

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

 

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

 

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

 

감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

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

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

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

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

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

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

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

 

그래서 소스를 정리하자면

</p>

<p><?php</p>

<p>    $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']."
";

    }

    echo $output;

?></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

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

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

답변 감사합니다. :)

"rsp": {
"_content": {
"folder": {
불량학생
7년 전
1)어디에서 문제가 생기는지 보려고 숫자 넣은겁니다.
그냥 무시하셔도 됩니다.

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

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

댓글을 작성하려면 로그인이 필요합니다.

진서기
7년 전

print_r( $json );

해서 배열 구조 확인해보세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인