2017-10-04 1 views
-5

안녕하세요, json_encode을 사용하여 json 형식으로 데이터를 다시 전달하려고합니다.Php에서 Json을 반환 중 []

는 그러나이 같은 반환 할 것 같다 : 최종 사용자들이 대괄호없이 응답을 기대 말했다 그러나

[{‘county’:’us’,’sector’:’retail’}] 

.

어떻게해야합니까?

감사합니다.

+0

은 json을 어떻게 생성하는지 코드를 공유합니까? –

+0

출력하려고하는 배열의 예를 들려 줄 수 있습니까? 재미있는 사실은 json의 첫 번째 레이어로 배열을 사용하면 악용 될 수 있습니다. [OWASP 링크] (https://www.owasp.org/index.php/AJAX_Security_Cheat_Sheet#Always_return_JSON_with_an_Object_on_the_outside) – Andrew

+1

'''? 정말? 나는'json_encode'가 그렇게 할 것이라고 생각할 수 없다. 또한 [mcve]를 포함하지 못했습니다. 우리가 보여주지 않은 코드로는 문제를 해결할 수 없습니다. – Quentin

답변

1

인코딩하는 값에 따라 달라집니다 ... json_encodeJSON_FORCE_OBJECT 옵션을 사용할 수 있지만 그게 내가 원하는대로 볼 수없는 것에서 볼 수 있습니다. 대괄호 "를 래퍼 객체에 추가합니다. 그럼에도 불구하고, 당신은 시도하려는 경우 :

json_encode($value, JSON_FORCE_OBJECT); 

편집 : 다른 사람이 말했듯이, json_encode($value[0]) 당신이 원하는 것으로 보인다.

+0

JSON_FORCE_OBJECT의 완벽한 트릭 덕분이라고 생각합니다. –

1

배열을 가정 할 수 있습니다 :

$data = [ 
    'country' => 'us', 
    'sector' => 'retail', 
]; 

그럼 그냥 그렇게 같은 json_encoded 배열을 반환 :

json_encode($data); 
// {"country":"us","sector":"retail"} 

그러나, 데이터 배열이 "중첩"그래서 같은 :

$data = [[ 
    'country' => 'us', 
    'sector' => 'retail', 
]]; 

다음 인코딩 된 첫 번째 요소를 반환하십시오.

json_encode($data[0]); 
// {"country":"us","sector":"retail"} 
0

필자가 실수로 데이터를 배열의 첫 번째 항목으로 저장하고있는 것을 경험했습니다.

는 예를 들어 당신이했을 수 있습니다

$json_store = Array(); 
$json_store[] = Array('country' => 'us', 'sector' => 'retail'); 
$json = json_encode($json_store); 
이에 대한 시험의 방법은 다음을 수행하는지 확인하는 것입니다

는 괄호 제거 : 만약 그렇다면

$json_encode($json_store[0]) 

을, 당신은했습니다 불필요하게 중첩 된 배열을 수정해야합니다. 위의 행을 사용하는 것은 데이터가 처음에 저장되는 방식을 수정하는 것이 좋으므로 피해야합니다.