使用嵌套的对象数组填充JSON对象的正确格式是什么?

时间:2014-07-17 17:23:47

标签: javascript arrays json

我正在尝试使用嵌套的JSON对象数组创建一个JSON对象。这是什么格式?

以下是我要创建的示例:

    {
    "reviewCount": 96,
    "reviews": [
        {"name": "Sean Steinman", "date": "reviewed 2 weeks ago", "reviewContent": "Fantastic Service"},
        {"name": "Ryan Lundell", "date": "reviewed in the last week", "reviewContent":"Ask for Scott!"}
    ]
}

这是我到目前为止所做的:

var reviewObj = {
   reviewCount: reviews.length,
   reviews: [{name: , date: , reviewContent:}]
}

初始化之后,我将用一个贯穿现有字符串数组的for循环填充它。

澄清:

我用来填充JSON对象的数组是:

[
  "\nSean Steinman\nreviewed 2 weeks ago\n Fantastic Service\n",
  "\nRyan Lundell\nreviewed in the last week\n Ask for Scott!\n• • •\n"
]

所以我在我的for中使用tmpArr = reviews[i].split('/n');创建了一个新数组,然后我陷入困境是如何将其添加到JSON对象中一个东西。

1 个答案:

答案 0 :(得分:2)

首先,您没有构建“JSON”对象。你只是在建造一个物体。在JSON编码之前,它不是JSON。 {"name": "bob"}不是JSON,它是一个对象文字。 '{"name": "bob"}'字符串是JSON。

其次,你不能在对象文字中循环,这是你的第二个代码示例似乎表明你正在尝试做的事情。相反,您需要将reviews属性初始化为空数组,然后然后循环并将项目附加到数组。

var reviews = [
  "\nSean Steinman\nreviewed 2 weeks ago\n Fantastic Service\n",
  "\nRyan Lundell\nreviewed in the last week\n Ask for Scott!\n• • •\n"
];

var reviewObj = {
  reviewCount: reviews.length,
  reviews: []
}

reviews.forEach(function(line) {
  var review = line.split("\n");
  reviewObj.reviews.push({name: review[0], date: review[1], reviewContent: review[2]});
});