2016-03-28 1 views
-1

Я использовал JSON.stringify для преобразования объекта JSON в строку, сохранил его в базе данных и извлек его. Когда я пытаюсь декодировать его в json, используя json_decode(), он возвращает NULL (я использовал var_dump() для его проверки).Невозможно разобрать одну из двух строк json, которые выглядят одинаково.

{"profilediv":" klsadnlksa ","profilediv2":" sankldnlkas ","profilediv3":" nsjakdnsjka "} 

{"profilediv":"nsjakdnsjka","profilediv2":"sankldnlkas","profilediv3":"klsadnlksa"} 

Я могу разобрать вторую строку, но не первую. Здесь весь код.

<?php 
$x = '{"profilediv":" 

klsadnlksa 

","profilediv2":" 

sankldnlkas 

","profilediv3":" 

nsjakdnsjka 

"}'; 
$x = trim($x); 
$y = json_decode($x,true); 
var_dump($y); 
$json = '{"profilediv":"nsjakdnsjka","profilediv2":"sankldnlkas","profilediv3":"klsadnlksa"}'; 
var_dump(json_decode($json)); 
?> 

А вот выход

NULL object(stdClass)#1 (3) { ["profilediv"]=> string(11) "nsjakdnsjka" ["profilediv2"]=> string(11) "sankldnlkas" ["profilediv3"]=> string(10) "klsadnlksa" } 

Я могу разобрать $ JSON, но х не $. Любая помощь приветствуется. Спасибо заранее.

+1

Выверните переносы строк, они делают JSON недействительным. –

+0

Я использовал обрезку для этой цели. Проверьте первый блок кода в вопросе, обе строки выглядят почти одинаково. – handle

+0

'trim()' не обрезает ничего из этой строки. Только начало и конец. – AbraCadaver

ответ

0

Добавить это удалить новой строки

$x = str_replace("\n",'',$x); 
$y = json_decode($x,true); 

Будет var_dump ред как:

Array 
(
    [profilediv] => klsadnlksa 
    [profilediv2] => sankldnlkas 
    [profilediv3] => nsjakdnsjka 
) 

подрезать - Удаляет пробелы (или другие символы) из начала и конца строки

+0

Я использовал обрезку для этой цели. Проверьте первый блок кода в вопросе, обе строки выглядят почти одинаково. – handle

+0

, но он, похоже, не выполняет эту работу. Попробуйте это и дайте мне знать. Я пробовал, и он работает. –

+0

выполните '$ x = trim ($ x); print_r ($ x);' и вы увидите, что это не работает. trim только удаляет символы с начала и до конца. Не между –

0
function json_decode_with_new_lines($json, $assoc = TRUE){ 
    $json = str_replace("\n", "\\n", $json); 
    $json = str_replace("\r", "", $json); 
    return json_decode($json, $assoc); 
} 

Даст выход:

Array 
(
    [profilediv] => 

klsadnlksa 


    [profilediv2] => 

sankldnlkas 


    [profilediv3] => 

nsjakdnsjka 


) 
Смежные вопросы