مساعدة مع تستهلك تغذية JSON مع PHP & json_decode
سؤال
ولقد تواجه مشكلة مع المستهلكة تغذية خاصة للعميل. وتعطى لي 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);
ويبدو أن ولست بحاجة للحفاظ على الحروف "\ ن" في تغذية نفسها، ولكن هذه الحصول على تجريده من عند استخدام:
file_get_contents
وعلى أي حال، أعتقد أنك تعرف ما أنا بعد، أنا فقط لم تكن متأكدا ما أفعله خطأ. وأنا أقدر مساعدة مقدما. لقد حاولت استخدام مسج مع jsonp لكنه سيكون أكثر مثالية بهذه الطريقة منذ أن كنت بحاجة إلى فرز من خلال مجموعة بعد ذلك وأنها لا تحتاج إلى أن تكون متزامنة.
والجوزة
المحلول
ومن الممكن أن خلاصتك تحتوي على نص يونيكود. جرب:
$decode = json_decode(addslashes($json), true)
تحديث:
وحل المشكلة. وهناك حالات من \'s
في البيانات سلمان الذي 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);
نصائح أخرى
وكنت البيانات يهرب علامات الاقتباس المفردة (الفواصل العليا) بخط مائل (مثل \ '). المواصفات JSON لا يقول هذا ينبغي القيام به، وبالتالي PHP لا تتصرف بشكل صحيح.
وانظر: http://bugs.php.net/bug.php؟id = 42708
ويمكنك محاولة استبدال جميع \ 'مع':
$json = str_replace('\\\'', "'", $json);
وقبل استدعاء json_decode.