【发布时间】:2013-02-07 13:44:57
【问题描述】:
我正在尝试在 js 中构造 JSON 对象。在堆栈溢出本身中已经有几篇关于这个主题的帖子。参考How do i build JSON dynamically in javascript?。必须完全像帖子中提到的那样构建 JSON。
{
"privilege": {
"accesstype": "VIEW",
"attribute": [
{
"code": "contenttype",
"displayname": "Content type",
"value": {
"valcode": "book_article",
"valdisplayName": "Book Article"
}
},
{
"code": "mime",
"displayname": "Mime type",
"value": {
"valcode": "xml",
"valdisplayName": "Xml"
}
}
]
}
}
按照帖子中的答案并尝试了这个,
var privilege = {};
privilege.attribute[0].code = "contenttype";
privilege.attribute[0].displayname = "Content type";
privilege.attribute[0].value.valcode = "book_article";
privilege.attribute[0].value.valdisplayName = "Book Article";
但由于 privilege.attribute undefined 出现错误。
我无法弄清楚我哪里出错了。假设必须有一些声明问题。任何点亮它都会有很大帮助。
【问题讨论】:
-
在添加成员之前,您是否尝试过
privilege.attribute = new Array()或类似的方法?我认为这与attribute本身没有被声明并且您立即尝试将其用作数组这一事实有关。不过只是猜测。 -
好吧,您必须将
privilege.attribute初始化为一个数组,并将该数组的第一个元素初始化为一个对象。请查看developer.mozilla.org/en-US/docs/JavaScript/Guide/…。构建对象后,您可以使用JSON.stringify将其转换为 JSON。 -
How do i build JSON dynamically in javascript? 的可能重复项-答案显示了您需要知道的所有内容,只是您没有正确遵循它。请再读一遍。话虽如此,根据您实际想要做的事情,可能有更简单的方法来创建您想要的结构(请参阅 Jim 的回答)。
标签: javascript json