سؤال

ولقد تواجه مشكلة مع المستهلكة تغذية خاصة للعميل. وتعطى لي 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top