2017-12-22 3 views
1

JSON 형식의 데이터를 제공하는 타사 API를 기반으로 응용 프로그램을 작성하고 있습니다.API 응답이 JSON 형식으로 인식되지 않습니다.

코드 스 니펫 :

<?php 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "https://api.test,com"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, FALSE); 

curl_setopt($ch, CURLOPT_POST, TRUE); 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type: application/json", 
    "X-API-KEY: *", 
    "X-API-SECRET: *" 
)); 

$response = curl_exec($ch); 
curl_close($ch); 

var_dump($response); 

위해 var_dump() 명령은 $ 응답 변수가 문자열이 아닌 JSON을 나타냅니다.

문자열을 JSON으로 정리하는 방법, stripslashes를 제거하는 방법, 보이지 않는 16 진수 문자를 제거하는 방법 등 다양한 스택 교환 게시물을 살펴 보았지만 아무 것도 작동하지 않는 것 같습니다.

이것을 JSON 유효성 검사 도구에 붙여 넣으면 모든 것이 정상이라고 나와 있습니다.

2 질문 :

  1. 나는이 문자열 대신 JSON되도록 내 코드에 뭔가를 놓치고 있습니까? 이전에 API를 사용했는데 방금 작업 한 API를 사용했습니다 ...
  2. 이 API는 타사 API이므로이 상황을 해결하기위한 수정 프로그램이 오래 걸릴 가능성이 큽니다. 이 문자열을 JSON 또는 배열 객체로 변환하여 사용할 수 있도록 사용할 수있는 스크립트가 있습니까?

고마워요!

+0

JSON은 문자열이기 때문에 데이터 형식이 아니라 형식이므로 json_decode를 사용하여 배열로 변환합니다. –

답변

0

그래, 항상 HTTP 응답은 문자열입니다. 당신은 명시 적으로 타입 변환해야합니다 : 당신이 배열 대신 개체로이 원하는 경우

$response = json_decode($response); 
var_dump($response); 

true로 두 번째 매개 변수를 설정합니다.

$response = json_decode($response, true); 
var_dump($response); 
+1

고마워, 그게 다야! 조금 어리석은 느낌 :-) – frdho

관련 문제