json 형식 php로 다시한번만 봐주세요..

json 형식 php로 다시한번만 봐주세요..

QA

json 형식 php로 다시한번만 봐주세요..

본문

스크립트로 확인하는건 그누위즈님이 답변 주셔서 해결했습니다.

 

    $test="{\"result\":{\"resultCd\":\"0000\",\"resultMsg\":\"성공\",\"advanceMsg\":\"정상승인\",\"create\":\"20240410001244\"},\"pay\":{\"authCd\":\"82077601\",\"card\":{\"cardId\":\"card_0dad-000a9-35d-e7a5e\",\"installment\":0,\"bin\":\"518831\",\"last4\":\"3218\",\"issuer\":\"삼성\",\"cardType\":\"신용\",\"acquirer\":\"삼성\",\"issuerCode\":\"04\",\"acquirerCode\":\"04\"},\"webhookUrl\":\"\",\"products\":[{\"prodId\":\"\",\"name\":\"상품명패키지(박스+미포함-3)\",\"qty\":1,\"price\":1000,\"desc\":\"description\"}],\"trxId\":\"T240331783861\",\"trxType\":\"3DTR\",\"tmnId\":\"TMN043159\",\"trackId\":\"20240411161206-1394\",\"amount\":1000,\"udf1\":\"1394\",\"udf2\":\"\"}}";


$data = json_decode($test, true);
echo $resultMsg = $data['result']['resultMsg'];

echo $trxId= $data['result']['trxId'];

 

 

값을 가져올수가 없는데

$test 변수에 저런형태로 있을경우. 어떻게 원하는 값을추출을 해야하나요?

 

이 질문에 댓글 쓰기 :

답변 4


<?php
    $test="{\"result\":{\"resultCd\":\"0000\",\"resultMsg\":\"성공\",\"advanceMsg\":\"정상승인\",\"create\":\"20240410001244\"},\"pay\":{\"authCd\":\"82077601\",\"card\":{\"cardId\":\"card_0dad-000a9-35d-e7a5e\",\"installment\":0,\"bin\":\"518831\",\"last4\":\"3218\",\"issuer\":\"삼성\",\"cardType\":\"신용\",\"acquirer\":\"삼성\",\"issuerCode\":\"04\",\"acquirerCode\":\"04\"},\"webhookUrl\":\"\",\"products\":[{\"prodId\":\"\",\"name\":\"상품명패키지(박스+미포함-3)\",\"qty\":1,\"price\":1000,\"desc\":\"description\"}],\"trxId\":\"T240331783861\",\"trxType\":\"3DTR\",\"tmnId\":\"TMN043159\",\"trackId\":\"20240411161206-1394\",\"amount\":1000,\"udf1\":\"1394\",\"udf2\":\"\"}}";

$data = json_decode($test, true);
echo $resultMsg = $data['result']['resultMsg'];
//echo $trxId= $data['result']['trxId'];
echo $trxId= $data['pay']['trxId'];
?>

감사합니다. 실마리를 잡을거같아요.
API 제공업체에서 UTF-8 로 설계되어있었습니다.

제가 사용하는 환경은 EUC-KR이라서.. 변환하는 부분을 고민해보면 될거같습니다.
UTF-8로 하니 말씀하신 위 코드 동작합니다.

var_dump($data); 이렇게 해서 배열이 정상적으로 보여지고 있는지 부터 확인해 보세요

 $test='{"result":{"resultCd":"0000","resultMsg":"성공","advanceMsg":"정상승인","create":"20240410001244"},"pay":{"authCd":"82077601","card":{"cardId":"card_0dad-000a9-35d-e7a5e","installment":0,"bin":"518831","last4":"3218","issuer":"삼성","cardType":"신용","acquirer":"삼성","issuerCode":"04","acquirerCode":"04"},"webhookUrl":"","products":[{"prodId":"","name":"상품명패키지(박스+미포함-3)","qty":1,"price":1000,"desc":"description"}],"trxId":"T240331783861","trxType":"3DTR","tmnId":"TMN043159","trackId":"20240411161206-1394","amount":1000,"udf1":"1394","udf2":""}}';

 

 

$data = json_decode($test, true);
echo $resultMsg = $data['result']['resultMsg'];

echo $trxId= $data['result']['trxId'];

 

\를 제거했는데도 문제가 있네요..

json으로 받은변수로 알고있었는데..

제가 주신 소스를 기준으로 테스트를 해보니 $resultMsg 부분은 잘 가져오는거 확인되는데요

$trxId 값은 $data['pay']['trxId'];

이런식으로 가져오면 됩니다.


<?php
$test='{"result":{"resultCd":"0000","resultMsg":"성공","advanceMsg":"정상승인","create":"20240410001244"},"pay":{"authCd":"82077601","card":{"cardId":"card_0dad-000a9-35d-e7a5e","installment":0,"bin":"518831","last4":"3218","issuer":"삼성","cardType":"신용","acquirer":"삼성","issuerCode":"04","acquirerCode":"04"},"webhookUrl":"","products":[{"prodId":"","name":"상품명패키지(박스+미포함-3)","qty":1,"price":1000,"desc":"description"}],"trxId":"T240331783861","trxType":"3DTR","tmnId":"TMN043159","trackId":"20240411161206-1394","amount":1000,"udf1":"1394","udf2":""}}';
// JSON문자열 → 배열
$arr = json_decode($test, true);
echo $arr['pay']['trxId']; // T240331783861
// JSON문자열 → 객체
$obj = json_decode($test);
echo $obj->pay->trxId; // T240331783861
답변을 작성하시기 전에 로그인 해주세요.
전체 123,725 | RSS
QA 내용 검색

회원로그인

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