2021-01-04

Json의 데이타 형식 : array , 배열, $a[b][c][d]

 Json의 데이터 형식은 배열 array 이다.


1) Json 데이터를 아래와 같이 구성하여 보낼 수 있다.


1-1) PHP 5.6 에서는 array( array( array( ) ) ) 형태로 배열 작성을 해야 한다.


$json_ = array(
"aaa"=>"AAA",
"aab"=>"AAB",
"bbb"=>array("bbc"=>"BBC", "bbd"=>"BBD", "bbe"=>"BBE"),
"ccc"=>"CCC",
"eee"=>array("eef"=>"EEF", "eeg"=>"EEG", "eeh"=>"EEH"),
"fff"=>array("ggg"=>array("ggh"=>"GGH","ggi"=>"GGI"), "hhh"=>"HHH", "iii"=>"III"),
"jjj"=>"JJJ"
);



1-2) 이것은 PHP에서 다음과 같이 입력할 수도 있다.


$json_[aaa] = "AAA";
$json_[aab] = "AAB";
$json_[bbb][bbc] = "BBC";
$json_[bbb][bbd] = "BBD";
$json_[bbb][bbe] = "BBE";
$json_[ccc] = "CCC";
$json_[eee][eef] = "EEF";
$json_[eee][eeg] = "EEG";
$json_[eee][eeh] = "EEH";
$json_[fff][ggg][ggh] = "GGH";
$json_[fff][ggg][ggi] = "GGI";
$json_[fff][hhh] = "HHH";
$json_[fff][iii] = "III";
$json_[jjj] = "JJJ";



1-3) 반복문 : for (), while() 안에서
for() {
    $json[rates][] = array("a"=>$aaa, "b"=>$bbb, "c"=>$ccc);
}


=> 이것을 인코딩하면 다음과 같이 표시된다.

---------------------

$json = json_encode($json,JSON_UNESCAPED_UNICODE);
print_r($json);

---------------------

{"rates":[{"a":"aaa","b":"bbb","c":"ccc"},{"a1":"aaa1","b1":"bbb1","c1":"ccc1"},{"a2":"aaa2","b2":"bbb2","c2":"ccc2"},{"a3":"aaa3","b3":"bbb3","c3":"ccc3"}]}






2) Json의 데이터는 다음과 같이 php에서 받을 수 있다.


2-1) 넘어오는 변수명을 알고 있으면 다음과 같이 받을 수 있다.


$aaa = $json_[aaa] ;
$aab = $json_[aab] ;
$bbc = $json_[bbb][bbc] ;
$bbd = $json_[bbb][bbd] ;
$bbe = $json_[bbb][bbe] ;
$ccc = $json_[ccc] ;
$eef = $json_[eee][eef] ;
$eeg = $json_[eee][eeg] ;
$eeh = $json_[eee][eeh] ;
$ggh = $json_[fff][ggg][ggh] ;
$ggi = $json_[fff][ggg][ggi] ;
$hhh = $json_[fff][hhh] ;
$iii = $json_[fff][iii] ;
$jjj = $json_[jjj] ;



2-2) 넘어오는 변수명을 모르면 다음과 같이 받을 수 있다.


while(list($key,$value)=each($json_)) {

    $data_txt .= "$key : $value\n";


    while(list($key2,$value2)=each($value)) {
        $data_txt .= "-> $key2 : $value2\n";


        while(list($key3,$value3)=each($value2)) {
            $data_txt .= "---> $key3 : $value3\n";
        }
    }
}


2-3) 넘어오는 변수명을 모를때 다음으로도 받을 수 있다.


foreach($json_ as $key,$value) {

    $data_txt .= "$key : $value\n";


    foreach($value as $key2,$value2) {
        $data_txt .= "-> $key2 : $value2\n";


        foreach($value2 as $key3,$value3) {
            $data_txt .= "---> $key3 : $value3\n";
        }
    }
}




3. Json data를 받고서 결과값 리턴하기

if ( !$save_check ) {
    $re_[result] = "error";
    $re_[r_msg] = "저장에 실패했습니다.";
    $json = json_encode($re_, JSON_UNESCAPED_UNICODE);
    print_r($json);
}
else {
    $re_[result] = "ok";
    $re_[r_msg] = "저장에 성공했습니다.";
    $json = json_encode($re_, JSON_UNESCAPED_UNICODE);
    print_r($json);
}


=> 이것은 다음과 같이 표시된다.

{"result":"ok","r_msg":"저장에 성공했습니다."}






4. 리턴받은 결과값을 변수로 받기, 배열로 받기.

---------------

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

---------------


$result = curl_exec($ch);

$data = json_decode($result, true);



echo "aaa: ".$data[aaa]."<br>";
//echo "bbb: ".$data[bcde][0]["bbb"]."<br>";
//echo "ccc: ".$data[bcde][0]["ccc"]."<br>";
//echo "ddd: ".$data[bcde][0]["ddd"]."<br>";


foreach ($data['bcde'] as $key => $value){
    echo $value['bbb']." / ";
    echo $value['ccc']." / ";
    echo $value['ddd']." /<br> ";
};


댓글 없음:

댓글 쓰기