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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
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
답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

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