【问题标题】:Single quotes are added to start and end of JSON在 JSON 的开头和结尾添加单引号
【发布时间】:2021-11-02 10:31:40
【问题描述】:

this JSON 的开头和结尾添加单引号,然后将其返回为here 查看。

我尝试使用 JavaScript 的 substring() 方法删除第一个和最后一个字符以使用 JSON.parse() 解析它,但无法删除。

解析它的正确方法是什么?

对于那些想要 JSON 的人;

"[{\"ParameterType\":\"Parametre Türü1\",\"DisplayType\":\"ComboBox\",\"Parameters\":[{\"Name\":\"Parametre1\",\"Ids\":[\"9786057751744\",\"9786257069335\",\"9786057580399\",\"0\",\"0\",\"0\"]},{\"Name\":\"Parametre2\",\"Ids\":[\"0\",\"0\",\"0\",\"0\",\"9789751969194\",\"0\"]}]},{\"ParameterType\":\"Parametre Türü2\",\"DisplayType\":\"CheckBox\",\"Parameters\":[{\"Name\":\"Param1\",\"Ids\":[\"9786057751744\",\"9786257069335\",\"9786057580399\",\"0\",\"0\",\"0\"]},{\"Name\":\"Param2\",\"Ids\":[\"0\",\"0\",\"0\",\"0\",\"9789751969194\",\"0\"]}]},{\"ParameterType\":\"Parametre Türü3\",\"DisplayType\":\"ComboBox\",\"Parameters\":[{\"Name\":\"1\",\"Ids\":[\"9786057751744\",\"0\",\"0\",\"0\"]},{\"Name\":\"2\",\"Ids\":[\"9786257069335\",\"0\",\"0\",\"9789751969194\"]},{\"Name\":\"3\",\"Ids\":[\"9786057580399\",\"0\",\"0\",\"0\"]}]}]"

【问题讨论】:

  • 您的 JSON 格式不正确。使用在线格式化程序检查它。
  • 你能分享你正在使用的代码和你得到的输出(以及你的期望)吗?在我看来,如果你把 JSON 通过 JSON.parse() 输出就可以了。
  • 此处显示的 @DivyanshuSah 是有效的 JSON。它是一个字符串,解析后返回另一个 JSON 编码字符串。
  • @ArturoMendes。他的 JSON 格式不正确。仔细看。键值对如下所示:\"ParameterType\":\"Parametre Türü1\".
  • @DivyanshuSah 我想你想标记我。是的,它是\"ParameterType\":\"Parametre Türü1\",但这有什么问题。 "a string" 是 JSON,它是一个编码为 JSON 数据的字符串。所以 OP 显示的是用 JSON 编码的单个字符串。

标签: javascript json asp.net-core


【解决方案1】:

JSON 编码的数据不需要是数组、对象,也可以是单个字符串:

console.log(JSON.parse("\"test\""))

这就是你得到的。它是一个单一的字符串。这个字符串本身也包含 JSON 编码的数据,表明该数据被编码了两次。

如果您执行JSON.parse(JSON.parse(data)),您将获得该对象。 但与其解析数据两次,不如找出它被编码两次的原因并修复它。

这个 sn-p 显示了如果你对数据进行两次编码会发生什么,它看起来就像你显示的数据:

let data = [{"ParameterType":"Parametre Türü1"}]

let encodedOnce = JSON.stringify(data)
let encodedTwice = JSON.stringify(encodedOnce)

console.dir(encodedTwice)

let decodedOnce = JSON.parse(encodedTwice)
let decodedTwice = JSON.parse(decodedOnce)

console.dir(decodedTwice)

【讨论】:

    【解决方案2】:

    也许可以试试JSONStringify()

    【讨论】:

    • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2017-11-22
    相关资源
    最近更新 更多