JavaScript e JSON não permitem que retornos de linha estejam contidos em uma string. Você precisa escapar deles.
json_encode()
deve escapar deles automaticamente para você. Aqui está a saída do meu jogo com seu código JSON fornecido no shell interativo do PHP:
php > $json = '{"content":"aaa
php ' bbb"}';
php > var_dump(json_decode($json, true));
NULL
Como você pode ver, quando eu escapo seu retorno de linha, ele funciona bem:
php > $json = '{"content":"aaa\n bbb"}';
php > var_dump(json_decode($json, true));
array(1) {
["content"]=>
string(8) "aaa
bbb"
}
Isso também é discutido em uma pergunta anterior relacionada a um problema semelhante:Problema ao recuperar texto no formato JSON contendo quebras de linha com jQuery