【问题标题】:turn db json into javascript object using JSON.parse() failed使用 JSON.parse() 将 db json 转换为 javascript 对象失败
【发布时间】:2018-10-17 03:14:24
【问题描述】:

我有 data json 存储在 mysql 中。

我愿意console.log(data)

我看到了

{
  "id": "1",
  "sales": 10,
  "msg": "\"Have a nice day\"",
}

但我知道它不是 javascript 对象,因为console.log(typeof data) //string

我怎样才能把它变成 javascript 对象?我愿意

JSON.parse(data) 但我得到了错误

Unexpected token o in JSON at position 1

【问题讨论】:

  • 这之间发生了很多事情:我有存储在 mysql 中的数据 json。我有 console.log(data)。请分享该代码。
  • 这令人费解,因为我认为您的 JSON 没有任何问题。消息后有一个多余的逗号,但这无关紧要。真正奇怪的是,您的字符串甚至不包含o,更不用说位置1了。您认为数据是肯定的吗?
  • 嗯,下面有一些有问题的答案...
  • @Brad... 我知道这不是规范,但由于某种原因,我认为 parse 更宽容。我使用的 Java json 库不介意这种草率,我认为这也不会。但是刚刚在 js 中进行了测试,令我惊讶的是,您是正确的先生。谢谢,正在纠正...
  • bla,已经在上面编辑了一个愚蠢的错字。哦,好吧...

标签: javascript json ecmascript-6


【解决方案1】:

您有尾随逗号,将您的字符串复制并粘贴到网络上的任何 json 验证器。

正确的json格式应该是

{
 "id": "1",
 "sales": 10,
 "msg": "\"Have a nice day\"" -> delete the comma here
}

【讨论】:

    【解决方案2】:

    已更新以修复换行符

    问题是 JSON 对象需要括号 { } 但它们不在字符串中。尝试在所有内容之外包含引号(请注意字符串的引号)。这样的事情会起作用:

    const myJsonString = `{
        "id": "1",
        "sales": 10,
        "msg": "Have a nice day"
    }`
    
    JSON.parse(myJsonString)
    

    【讨论】:

    • 显然括号在那里。此外,您的代码不会解析......您需要使用反斜杠转义换行符。在发布之前测试您发布的内容。
    • 括号是有的,但是引号里面没有,差别很大。您对换行符的逃避是对的,试图使其更具可读性并忘记了这一点。我做了测试,但一切都是内联的。谢谢:)
    猜你喜欢
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2015-03-08
    相关资源
    最近更新 更多