【问题标题】:Valid JSON in jsonlint, but JSON.parse() not workingjsonlint 中的有效 JSON,但 JSON.parse() 不起作用
【发布时间】:2018-02-13 19:02:50
【问题描述】:

我有一个在 JSONlint 中验证的 JSON,但我不能使用 JSON.parse(),因为它不起作用。如果 JSON.prase() 不能使用,这里的 JSON 有什么问题,我的替代方案是什么。

JSON 字符串:"{Products: [{Id: 1,Increment: 5,Max: 1000,Min: 25,allowed: false,Desc: product description,Name:Product Name,Qty: 0}]}"

【问题讨论】:

  • 有错误信息吗?
  • 哦,这不是有效的 JSON.... 没有引用任何键。不确定如何通过 JSON linter。
  • 是的,这里一样,无效!

标签: javascript jquery json object


【解决方案1】:

要使 JSON 有效,您的对象键必须在双引号内:

{ "validKey": 123 }
  ^        ^
  |        |
  ------------- These double-quotes are required!

JSONLint 说没关系,因为您在此处粘贴 JSON,并用引号括起来:

"{Products: [{Id: 1,Increment: 5,Max: 1000,Min: 25,allowed: false,Desc: product description,Name:Product Name,Qty: 0}]}"

这是一个内部带有 JSON 的 json 字符串,而不是 JSON!

如果您尝试不带引号的 JSONLint,您将收到此错误:

Error: Parse error on line 1:
{   Products: [{        Id: 1
--^
Expecting 'STRING', '}', got 'undefined'

【讨论】:

    【解决方案2】:

    你的字符串和键应该被引用。这是JSON.parse() 将正确解析的有效 JSON

    {
      "Products": [
        {
          "Id": 1,
          "Increment": 5,
          "Max": 1000,
          "Min": 25,
          "allowed": false,
          "Desc": "product description",
          "Name": "Product Name",
          "Qty": 0
        }
      ]
    }
    

    您可以在此处阅读有关该标准的更多信息:https://www.json.org/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      相关资源
      最近更新 更多