관리 메뉴

웹개발자의 기지개

[php] json_decode 파싱하기 - 객체 or 배열로 본문

PHP

[php] json_decode 파싱하기 - 객체 or 배열로

http://portfolio.wonpaper.net 2020. 6. 21. 17:49

json 데이터를 파싱하는 방법을 다시 정리해 보았다.

json_encode 로 json 을 만들고 json_decode 로 간단히 파싱을 할 수 있는데,

이번에는 json_decode 이다.

 

[ 실제 json 데이터 ] 

{"startDate":"2020-06-07","endDate":"2020-06-13","timeUnit":"date","results":[{"title":"패션의류","category":["50000000"],"data":[{"period":"2020-06-07","ratio":100},{"period":"2020-06-08","ratio":98.14953},{"period":"2020-06-09","ratio":96.48507},{"period":"2020-06-10","ratio":95.7726},{"period":"2020-06-11","ratio":88.51052},{"period":"2020-06-12","ratio":76.7822},{"period":"2020-06-13","ratio":81.56885}]},{"title":"남성의류","category":["50000169"],"data":[{"period":"2020-06-07","ratio":37.98104},{"period":"2020-06-08","ratio":39.0699},{"period":"2020-06-09","ratio":38.14919},{"period":"2020-06-10","ratio":38.6986},{"period":"2020-06-11","ratio":34.84853},{"period":"2020-06-12","ratio":30.14323},{"period":"2020-06-13","ratio":30.91317}]}]}

눈에 잘 안들어 온다.

시각화하여 볼 수 있도록 아래의 사이트에서 json 데이터를 올려보자.

http://jsonviewer.stack.hu/

 

Online JSON Viewer

 

jsonviewer.stack.hu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
// 배열로 파싱
$arr = json_decode($response,true);
 
    echo $arr["startDate"] ."<br>";
    echo $arr["endDate"] ."<br>";
    echo $arr["timeUnit"] ."<br>";
    echo sizeof($arr["results"]). "<br>";
    foreach($arr["results"as $arr2) {
        echo $arr2["title"] . "<br>";
        echo $arr2["category"][0] . "<br>";
 
        foreach($arr2["data"as $arr3) {
            echo ": "$arr3["period"] . "<br>";
            echo ": "$arr3["ratio"] . "<br>";
        }
    }
 
?>
cs

json_decode 의 두번째 인수를 true 로 하면 배열값으로 리턴된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
// 객체로 파싱
$obj = json_decode($response);
 
echo $obj->startDate . "<br>";
echo $obj->endDate . "<br>";
echo $obj->timeUnit . "<br>";
echo $obj->results[0]->title . "<br>";
echo $obj->results[0]->category[0] . "<br>";
echo ": " . $obj->results[0]->data[0]->period . "<br>";
echo ": " . $obj->results[0]->data[0]->ratio . "<br>";
echo ": " . $obj->results[0]->data[1]->period . "<br>";
echo ": " . $obj->results[0]->data[1]->ratio . "<br>";
 
echo "<br>";
 
echo $obj->results[1]->title . "<br>";
echo $obj->results[1]->category[0] . "<br>";
echo ": " . $obj->results[1]->data[0]->period . "<br>";
echo ": " . $obj->results[1]->data[0]->ratio . "<br>";
echo ": " . $obj->results[1]->data[1]->period . "<br>";
echo ": " . $obj->results[1]->data[1]->ratio . "<br>";
 
?>
cs

data 의 배열값이 모두 5개인데 일부분만 0번, 1번만 출력해 보았다.

 

json_decode의 두번째 인수가 없다면 stdClass() 객체로 리턴값이 반환된다.

 

 

https://zetawiki.com/wiki/PHP_json_decode()

 

Comments