json 为什么我不能把下面的字符串解析成一个JS字符串?

iqxoj9l9  于 2023-03-04  发布在  其他
关注(0)|答案(2)|浏览(135)

调用JSON.stringify的输出如下所示:

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<html>\n  <head>\n    <meta charset=\"utf-8\"/>\n  </head>\n  <body>\n    <ul id=\"BcVWDENh\">\n      <li id=\"3C\">\n        <p>Hello World</p>\n      </li>\n    </ul>\n  </body>\n</html>\n"

然后,我尝试调用JSON解析来获取一个JS字符串:

JSON.parse(
    "\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<html>\n  <head>\n    <meta charset=\"utf-8\"/>\n  </head>\n  <body>\n    <ul id=\"BcVWDENh\">\n      <li id=\"3C\">\n        <p>Hello World</p>\n      </li>\n    </ul>\n  </body>\n</html>\n\""
)

(我不得不在内容周围加上双引号,并将两者都转义)
我得到:
错误:语法错误:JSON解析错误:无法解析JSON字符串(-2700)
这是怎么回事?

fkaflof6

fkaflof61#

检查输出-

const myDefinedStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<html>\n  <head>\n    <meta charset=\"utf-8\"/>\n  </head>\n  <body>\n    <ul id=\"BcVWDENh\">\n      <li id=\"3C\">\n        <p>Hello World</p>\n      </li>\n    </ul>\n  </body>\n</html>\n";

const result = JSON.parse(JSON.stringify(myDefinedStr));

console.log(result);
1wnzp6jl

1wnzp6jl2#

你所谓的"JSON.stringify调用的输出"实际上是输出的 * 打印输出 *,当你想把这个字符串输入JSON.parse时,你必须把所有的反斜杠都加双:

document.querySelector("textarea").textContent = JSON.parse('"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<html>\\n  <head>\\n    <meta charset=\\"utf-8\\"/>\\n  </head>\\n  <body>\\n    <ul id=\\"BcVWDENh\\">\\n      <li id=\\"3C\\">\\n        <p>Hello World</p>\\n      </li>\\n    </ul>\\n  </body>\\n</html>\\n"');
<textarea rows="10" cols="40"></textarea>

相关问题