我不了解JSON。需要一些帮助来清理一些东西

时间:2014-12-27 22:38:28

标签: javascript json

以下是我正在使用的内容。

jsonobject = {
  "products": [
    {
      "ProductABC-001": {
        "attributes": [
          {
            "color": "blue"
          },
          {
            "size": "large"
          }
        ]
      }
    }
  ]
};
  1. 这是真正的/纯粹的JSON对象还是其他的呢?
  2. 如果答案是"否"与它有什么不同以及纯/真JSON对象?
  3. 为什么以下返回" undefined"而不是"数组"?从我的角度来看,我是产品节点的第一个元素,这意味着下一个级别是属性数组。显然,这是错误的。
  4.   

    jsonobject.products [0] .attributes [0]

2 个答案:

答案 0 :(得分:4)

  1. 这里根本没有JSON。你拥有的是一个Javascript对象文字,用于创建一个Javascript对象。

  2. JSON是数据的文本表示。 JSON语法是Javascript对象和数组文字语法的子集。您在=;之间的对象文字恰好遵循更严格的JSON语法,因此您可以将这部分源代码用作JSON。

    < / LI>
  3. 因为您从jsonobject.products[0]获得的对象没有任何attributes属性。

  4. 您将使用jsonobject.products[0]['ProductABC-001'].attributes[0],它返回对象{ "color": "blue" }


    从我所看到的,你需要的只是一个产品对象数组,它有一个名字和一个带有属性的对象:

    var products = [
      {
        name: "ProductABC-001",
        attributes: {
          color: "blue",
          size: "large"
        }
      }
    ];
    

答案 1 :(得分:0)

1/2。不,不是=标志不是JSON spec的一部分。您必须删除jsonobject =位,以便&#34;纯&#34; JSON。 (您可以在此处验证任何JSON:http://jsonlint.com

对于3,@ davin-tryon是正确的,你错过了["ProductABC-001"]所在的"attributes"位。试试这个:

jsonobject.products[0]["ProductABC-001"].attributes[0]