C'est une question vraiment ancienne, mais je suis tombé dessus lors d'une recherche et je pense que je connais la source de votre problème.
JSON ne permet pas de "vraies" sauts de ligne dans ses données ; il ne peut avoir que des sauts de ligne échappés. Voir la réponse de @YOU. Selon la question, il semble que vous avez essayé d'échapper aux sauts de ligne en Python de deux manières : en utilisant le caractère de continuation de ligne ("\"
) ou en utilisant "\n"
comme échappement.
Mais gardez à l'esprit : si vous utilisez une chaîne de caractères en Python, les caractères échappés spéciaux ("\t"
, "\n"
) sont traduits en VRAIS caractères de contrôle ! Le "\n"
sera remplacé par le caractère de contrôle ASCII représentant un saut de ligne, qui est précisément le caractère illégal dans JSON. (En ce qui concerne le caractère de continuation de ligne, il supprime simplement le saut de ligne.)
Donc ce que vous devez faire, c'est empêcher Python d'échapper aux caractères. Vous pouvez le faire en utilisant une chaîne brute (mettez r
devant la chaîne, comme dans r"abc\ndef"
, ou en incluant une barre oblique supplémentaire devant le saut de ligne ("abc\\ndef"
).
Les deux ci-dessus, au lieu de remplacer "\n"
par le vrai caractère de contrôle ASCII de saut de ligne, laisseront "\n"
en tant que deux caractères littéraux, que JSON peut ensuite interpréter comme un échappement de saut de ligne.
4 votes
Organisez vos données : divisez la chaîne multiligne en un tableau de chaînes, puis joignez-les plus tard.
3 votes
Essayez l'outil hjson. Il convertira votre chaîne multiligne en json au format json correct.
1 votes
Possible duplicate de Can a JSON value contain a multiline string
0 votes
Si vous avez une longue chaîne que vous devez encoder afin de la transmettre en tant que chaîne JSON, recherchez en ligne un encodeur JSON comme nddapp.com/json-encoder.html