【问题标题】:String cannot be converted into JSON in Javascript字符串不能在Javascript中转换为JSON
【发布时间】:2021-10-25 13:30:43
【问题描述】:
self.str = "
{"queryString":"user=test&password=1 OR TRUE ; -- ' OR TRUE; -- OR TRUE; K2FUZZ " OR TRUE; -- OR TRUE; K2FUZZ '","clientIP":"127.0.0.1","clientPort":"43470","dataTruncated":false,"contentType":"","requestURI":"/DemoApplication-0.0.1-SNAPSHOT/UserCheck3","generationTime":0,"body":"","method":"GET","url":"/DemoApplication-0.0.1-SNAPSHOT/UserCheck3?user=test&password=test123"}
"

self.obj = JSON.parse(self.str);

我收到错误:

base.js:1 SyntaxError: 位置 82 处 JSON 中的意外标记 O 在 JSON.parse()

我尝试了各种方法,但没有任何效果。谁能告诉我为什么会出现这个错误,我该如何解决?

就上下文而言,self.str 包含我从 API 响应中获得的字符串值。

【问题讨论】:

  • 正如您在“错误”错误消息中看到的(通过单击“在 sn-p 中运行代码”),您的示例不是 minimal reproducible example -> How do I ask a good question?
  • @Andreas 在这里我不想发布我的代码,而只是想给出一个粗略的例子来说明我的字符串是什么
  • @Andreas 我确实按照你说的做了,我不能发布整个代码,因为它没有用。我为您提供了一个示例输入,以及我试图对输入做什么以及我得到了什么错误。没必要这么粗鲁。

标签: javascript json string object parsing


【解决方案1】:

如果您向后处理 - 通过创建一个对象并将其字符串化 - 您会看到 queryString 中的引号需要转义。然后,您可以将其转换为有效的 JSON。

因此,无论此 JSON 来自什么数据,都需要正确格式化,因为它目前 不是有效的 JSON。

const obj = {
  "queryString": "user=test&password=1 OR TRUE ; -- \' OR TRUE; -- OR TRUE; K2FUZZ \"OR TRUE;--OR TRUE;K2FUZZ\'",
  "clientIP": "127.0.0.1",
  "clientPort": "43470",
  "dataTruncated": false,
  "contentType": "",
  "requestURI": "/DemoApplication-0.0.1-SNAPSHOT/UserCheck3",
  "generationTime": 0,
  "body": "",
  "method": "GET",
  "url": "/DemoApplication-0.0.1-SNAPSHOT/UserCheck3?user=test&password=test123"
}

const str = JSON.stringify(obj);

document.querySelector('pre').textContent = JSON.stringify(obj, null, 2);

// console.log(JSON.parse(str));
<pre></pre>

【讨论】:

  • 谢谢,我从您的解决方案中汲取灵感解决了这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多