Json-декодирование и переменная

у меня есть

$string = $_REQUEST['COM_node']; 

он кодирует строку

 {"cmp_class":"ProfileReferences","auto_id":"cmp14","forms":[],"parent":{"cmp_class":"PrivateMediaNetworkList","auto_id":"httpdoc"}} 

Когда я попробовал

 $nodeArray = json_decode($string, true); 

возвращает NULL. Но когда я дал

 $string = '{"cmp_class":"ProfileReferences","auto_id":"cmp14","forms":[],"parent":{"cmp_class":"PrivateMediaNetworkList","auto_id":"httpdoc"}}'; $nodeArray = json_decode($string, true); 

Он работает нормально. Я googled, но никакого решения. Помоги мне, пожалуйста.

Вы уверены, что ваш $ _REQUEST ['COM_node'] содержит точную строку без какого-либо скрытого символа, такого как спецификация UTF-8 или аналогичная?

 $string = chr(239).chr(187).chr(191).'{"cmp_class":"ProfileReferences","auto_id":"cmp14","forms":[],"parent":{"cmp_class":"PrivateMediaNetworkList","auto_id":"httpdoc"}}'; var_dump($string); // returns your string, although there are hidden chars $nodeArray = json_decode($string,true); var_dump($nodeArray); // returns NULL 

Попробуйте сравнить его с:

 $string = '{"cmp_class":"ProfileReferences","auto_id":"cmp14","forms":[],"parent":{"cmp_class":"PrivateMediaNetworkList","auto_id":"httpdoc"}}'; var_dump($_REQUEST['COM_node'] == $string); 

Если результат ложный, вам нужно будет выяснить, какие символы нужно обрезать.

EDIT: вы можете изменить строку, чтобы получить только часть, начинающуюся с первого {и заканчивая последним}

 preg_match("/{(.*)}/",$string,$matches); $string = $matches[0]; 

Передача true поскольку второй параметр json_decode() возвращает массив. Вам нужно будет использовать print_r() для его просмотра; echo() не будет работать.

 php > $string = '{"cmp_class":"ProfileReferences","auto_id":"cmp14","forms":[],"parent":{"cmp_class":"PrivateMediaNetworkList","auto_id":"httpdoc"}}'; php > echo json_decode($string, true); PHP Notice: Array to string conversion in php shell code on line 1 php > print_r($json_decode($string, true)); Array ( [cmp_class] => ProfileReferences [auto_id] => cmp14 [forms] => Array ( ) [parent] => Array ( [cmp_class] => PrivateMediaNetworkList [auto_id] => httpdoc ) )