无法通过JSON.parse()解析带换行符的JSON

时间:2015-06-19 15:58:23

标签: javascript jquery json

我有这个字符串

{"cb":15,"cl":12,"cr":18,"ct":3,"id":"6yIGexevqu9RGM:","ml":{"366":{"bh":96,"bw":112,"o":0},"454":{"bh":93,"bw":88,"o":0}},"oh":500,"os":"42KB","ou":"http://albums.songspk.link/images/cover/55553137088b0humnava.jpg","ow":500,"pt":"Humnava
                                                            - Hamari Ahduri Kahani (2015) Download Mp3 Songs
                                                            ...","rh":"albums.songspk.link","ru":"http://albums.songspk.link/audio-mp3-single-track/humnava_hamar_adhuri_kahani_mp3_song","s":"","th":112,"tu":"https://encrypted-tbn2.gstatic.com/images?q\u003dtbn:ANd9GcTlkE4gq7VQB5vB8-35jIF8YBh5KP14GsquWY1allab1-KnL07cREXXajV0_w","tw":112}

如果您将其复制并粘贴到JSONLINT,您会看到它因换行而显示错误。如果我删除换行符,则会解决错误。有没有办法在JavaScript中将字符串解析为JSON?

3 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法......

http://juristr.com/blog/2010/05/n-will-break-your-json-jquery-wcf/

在这篇文章中...有这个函数...对于我的事情,我用“”[空格]改变了“\ n”,因为我只想要解析JSON。

网站功能

function escapeNewLineChars(valueToEscape) {
   if (valueToEscape != null && valueToEscape != "") {
      return valueToEscape.replace(/\n/g, "\\n");
   } else {
      return valueToEscape;
   } 
}

我现在正在使用

function escapeNewLineChars(valueToEscape) {
   if (valueToEscape != null && valueToEscape != "") {
      return valueToEscape.replace(/\n/g, " ");
   } else {
      return valueToEscape;
   } 
}

我的问题解决了......我将“\ n”替换为“”......

答案 1 :(得分:-1)

David Thomas没有将字面换行作为字符串值的一部分提到“char”,因此您不能只插入字符串。您可以改为使用转义序列\n

答案 2 :(得分:-1)

JSON字符串中不会出现裸露的换行符;你必须逃避他们。根据字符串的编码方式,正确的转义序列可以是\n\r\n\r。最近这一天是不太可能的,但如果您可能正在处理在OSX之前的Mac上创建的文件,则可能会发生这种情况。

然而,它发生了,您需要浏览字符串并确保已转义其中的任何换行符,然后将 放入JSON文件中。或者,您可以从字符串中删除所有换行符,但这可能对您的应用程序不可行。