PHP ve JSON yem tüketen Yardım

2 Cevap php

Ben bir müşteri için özel bir yem tüketen ile bir sorunu olan var. Onlar bana bir uzak URL verdik ve cevap şöyle bir JSON dize:

{"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"}
]}

Örnek amaçlar için, ben biçimini göstermek için yem küçüldü, ama gerçekte bağlı yüzlerce vardır. Neyse, sonunda, ben bir ilişkisel dizi bu iştiraklerinin gerekiyor çünkü PHP json_decode kullanmak istiyorum.

Ben böyle bir şey var, ama ben sadece ham dize alma sonunda ve json_decode aslında bir ilişkisel dizi ayrıştırmak değildir.

$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);

Ben yem kendisi "\ n" karakterleri korumak gerekir gibi görünüyor, ama kullanırken bu dışarı çıkardı olsun:

file_get_contents

Neyse, ben sadece ben yanlış yapıyorum emin değilim, ben sonra ben ne biliyorum. Ben önceden yardım için teşekkür ederiz. Ben JSONP ile jquery kullanarak denedim ama sonra dizi ile sıralamak gerekir ve bu uyumsuz olmak zorunda değildir çünkü bu şekilde daha ideal olacaktır.

Meşe palamudu

2 Cevap

Bu besleme unicode metin içerdiğini mümkündür. Deneyin:

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


Güncelleme:

Sorunu çözüldü. json_decode düzgün işlemez json veri \'s örnekleri vardır. Bunu çözmek için, \ kaçmak çift gerekir. Bu ne yaptım.

<?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);

Veri besleme ters eğik çizgi (örneğin \ ') tek tırnak (kesme işareti) kaçar demektir. JSON PHP doğru davranmaz nedenle bu yapılmalıdır demek değildir ve.

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

Sen 'ile' tüm \ yerine deneyebilirsiniz:

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

json_decode çağırmadan önce.