【问题标题】:Json to javascript dictionaryJson 到 javascript 字典
【发布时间】:2018-11-06 08:33:50
【问题描述】:

我有以下结构的 JSON 数据,我正在尝试解析它以便使用 javascript 处理数据。

JSON 数据

{
    "FirstItem": {
        "id": 1,
        "type": "foo",
        "colours": ["blue", "black", "green"],
        "reviews": {
            "positive": ["The best", "unbelievable", "Awesome"],
            "negative": ["Sh*t", "Awful", "Dire", "Terrible", "Appalling"],
            "neutral": ["OK", "Meh"]
        }
    },
    "SecondItem": {
        "id": 2,
        "type": "bar",
        "colours": ["red", "white", "yellow"],
        "reviews": {
            "positive": ["Great", "Amazing", "Fantastic", "Perfect", "Uplifting"],
            "negative": ["Terrible", "Shocking", "abysmal"],
            "neutral": ["OK", "Standard", "Vanilla"]
        }
    }
}

我正在尝试使用 JSON.parse() 解析它,但是这会返回以下错误:

JSON.parse: unexpected character at line 1 column 2 of the JSON data

我之前使用 C# 处理过相同的 JSON 结构,并且不得不将其反序列化为字典 - 可以在这篇文章中找到信息

问题

如何将此 JSON 解析为 javascript 对象,以便循环和评估每个项目?

【问题讨论】:

  • JSON 是一个字符串。您的示例看起来像一个 JS 对象。
  • 已经解析...
  • 你可能不需要再解析它了。只需分配给一个变量并像variableName["FirstItem"]一样使用
  • 你说得对,这已经是一个 javascript 对象,但我如何以编程方式循环遍历每个项目?即检查FirstItem,然后检查SecondItem,然后检查ThirdItem等...

标签: javascript json parsing


【解决方案1】:

JSON 是带有双引号键的 Javascript 对象,就像您在示例中所拥有的一样。所以不需要再解析了,see this解释。你可以使用它的密钥来访问它的数据,或者如果你想从 SecondItem 获得评论,你可以使用它来访问它:

SecondItem.reviews

SecondItem['reviews']

【讨论】:

    【解决方案2】:

    显然你正在尝试解析一个已经解析过的对象

    x = {A:1};       // A javascript object
    JSON.parse(x);   // Error
    

    发生这种情况是因为JSON.parse 会先将对象转换为字符串,得到"[object Object]",然后会尝试解析此字符串。

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 2013-04-20
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多