JavaScript y JSON no permiten que los retornos de línea estén contenidos dentro de una cadena. Tienes que escapar de ellos.
json_encode()
debería escapar de ellos automáticamente para usted.
Aquí está el resultado de mi juego con su código JSON proporcionado en el shell interactivo de PHP:
php > $json = '{"content":"aaa
php ' bbb"}';
php > var_dump(json_decode($json, true));
NULL
Como puede ver, cuando escapo su retorno de línea, funciona bien:
php > $json = '{"content":"aaa\n bbb"}';
php > var_dump(json_decode($json, true));
array(1) {
["content"]=>
string(8) "aaa
bbb"
}
Esto también se analiza con más detalle en una pregunta anterior relacionada con un problema similar:Problema al recuperar texto en formato JSON que contiene saltos de línea con jQuery