json정보를 담은 변수명을 알수없는데 json 파싱 가능한가요?
본문
print_r($_POST);
로 출력결과를 받아보니
Array ( [RESULT_CODE] => 0000 [RESULT_MSG] => 성공 [RESULT_ORDERNO] => 101 [RESULT_PAYNO] => c4667a52528887 [payno] => c46623ae7455d68887 [orderno] => 101 [seq] => 1 [respcd] => 0000 [resptext] => test [paymethod] => 0001 [paytype] => 0004 [issuecd] => CCCT [issuenm] => 삼성카드 [payrequestamt] => 1004 [payamt] => 1004 [status] => 0003 [approvaltype] => 0001 [approvaldt] => 2024-07-08 10:48:17 [approvalno] => 181364817 [installmonth] => 00 [vanuniquekey] => 202407340T666358 )
이런 json 형태로 뿌려지네요..
이 json이 담긴 변수명을 모르는데
화면에 뿌려지는 정보만 가지고 원하는 정보를 추출 가능한가요?
예시) orderno 값을 추출
보통은
$data = json_decode($변수명, true);
echo $orderno= $data['orderno'];
이런식으로 추출하는데, 변수명을 알수 없는경우도 가능한지, 가능하다면 어떤형태로 추출해야하나요?
답변 3
print_r($_POST);로 출력했을때,
위와 같이 array()로 출력되면, json이 아니라 PHP배열로 이미 받으신겁니다.
$_POST 저 자체가 배열변수이기 때문에,
echo $_POST['orderno']; 이렇게 출력하시면 됩니다.
자문자답입니다.
$headers = apache_request_headers();
if($headers['Content-Type'] == "application/json") {
$reqParam = json_decode(file_get_contents('php://input'), true);
} else {
$reqParam = $_REQUEST;
}
$orderno = $reqParam['orderno'];
echo "-->".$orderno;
위의 결과로만 봤을경우 php 의 배열입니다.
혹시 json에서 json_decode 함수를 사용하신건지요?
현결과 값이 php의 배열이기 떄문에 예를들어 orderno 값을 가지고 오고 싶다면
$_POST['orderno] <-- 요런식으로 해서 가지고 올수 있습니다.
외에의 결과값등은 $_POST['RESULT_CODE'] 에서 간단하게 가지고 올수 있습니다.
만일 json의 포맷이라하면
[
{ "RESULT_CODE": "0000" },
{ "RESULT_MSG": "성공" },
{ "RESULT_ORDERNO": "101" },
{ "RESULT_PAYNO": "c4667a52528887 " },
......................
]
이런식의 결과값이 나와야 json 포맷이라 할수 있겠습니다.