문제

고객을위한 특정 피드를 소비하는 데 문제가 있습니다. 그들은 나에게 원격 URL을 주었고 응답은 다음과 같은 JSON 문자열입니다.

{"affiliate": [
{"ID":"1", "COUNTRY":"EXAMPLE", "NETWORK":"EXAMPLE", "PRIMARY":"EXAMPLE"},
{"ID":"2", "EXAMPLE":"EXAMPLE", "COUNTRY":"EXAMPLE", "NETWORK":"EXAMPLE", "PRIMARY":"EXAMPLE"},
{"ID":"3", "TITLE":"EXAMPLE", "COUNTRY":"EXAMPLE", "NETWORK":"EXAMPLE", "PRIMARY":"EXAMPLE"}
]}

예를 들어, 나는 형식을 보여주기 위해 피드를 줄 였지만 실제로는 수백 개의 제휴사가 있습니다. 어쨌든, 나는 php json_decode를 사용하고 싶습니다. 결국에는이 계열사가 연관 배열에 필요하기 때문입니다.

나는 이와 같은 것을 가지고 있지만 결국 원시 문자열을 얻게되고 json_decode는 실제로 그것을 연관 배열로 구문 분석하지 않습니다.

$request_url = "http://exampleurl.com/feed"; //returns feed like above

$json = file_get_contents($request_url, true); //getting the file content

$decode = json_decode($json, true);

print_r($decode);

피드 자체에서 " n"문자를 유지 해야하는 것 같습니다. 그러나 사용할 때는 제거됩니다.

file_get_contents

어쨌든, 나는 당신이 내가 무엇을 추구하는지 알고 있다고 생각합니다. 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 미리 도움을 주셔서 감사합니다. JSONP와 함께 jQuery를 사용하려고 시도했지만 배열을 나중에 정렬해야하므로 비동기식 일 필요가 없기 때문에 더 이상적입니다.

도토리

도움이 되었습니까?

해결책

피드에 유니 코드 텍스트가 포함되어있을 수 있습니다. 노력하다:

$decode = json_decode(addslashes($json), true)

업데이트:

문제를 해결했습니다. 인스턴스가 있습니다 \'s JSON 데이터에서 json_decode 제대로 처리하지 않습니다. 이것을 해결하려면 두 배의 탈출이 필요합니다 \. 이것이 내가 한 일입니다.

<?php
error_reporting(E_ALL);
$request_url = 'http://midas.glam.com/publisher_directory_data?network=glam&country=US&publish=Y';

$json = file_get_contents($request_url);
$json = str_replace('\\', '\\\\', $json);

$decode = json_decode($json, true);

var_dump($decode);

다른 팁

데이터 피드는 백 슬래시 (예 : ')로 단일 따옴표 (Apostrophes)를 피합니다. JSON 사양은 이것이 완료되어야한다고 말하지 않으므로 PHP는 올바르게 행동하지 않습니다.

보다: http://bugs.php.net/bug.php?id=42708

모든 '를': 대체 할 수 있습니다.

$json = str_replace('\\\'', "'", $json);

json_decode를 호출하기 전에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top