我必须使用jquery形成一个json输出。 需要用这个json消息表示的是一个名为' bucket'的项目的集合。该集合将包括图像元素,链接元素,术语元素或视频元素。每个元素类别中将存在多少项不是预先指定的,而是动态的。在继续jquery之前,我决定json输出看起来如下,而不确定这是否正确。
{
"bucket": {
"terms": [ {
"text": "logo design",
"data": "Interview with Petter Johansson at Stockholm Design Week"
} ],
"images": [{
"title": "Tattoo Design",
"thumbnail": "http://ts2.mm.bing.net/th?id=HN.608019252933102717&pid=15.1",
"url": "http://www.deerydesign.net/wp-content/uploads/2013/03/Tattoo-Design-006.jpg"
}],
"links": [{
"title": "Design News � Official Site",
"link": "http://www.designnews.com/",
"snippet": "Design News is the leading technical resource for design engineers and engineering managers who build products and systems through application of electronics & test ... "
}],
"videos": [{
"title": "Design Projects done in less than a minute each ",
"thumbnail": "https://i.ytimg.com/vi/vwtOGBxtI10/mqdefault.jpg",
"url": "http://www.youtube.com/watch?v=vwtOGBxtI10"
}]
}
}
之后我需要通过jquery形成json消息,但由于每个元素数组中的多个级别和非固定数量的项目,我发现这样做很困难。我开始有点像这样,但我不知道如何继续下一个级别。
jsonObj = {
bucket: []
};
jsonObj.bucket.push({
"terms" : $(data).text()
});
感谢任何帮助。
答案 0 :(得分:1)
jsonObj.bucket
是一个对象,而不是数组,因此您无法在其上调用push
。该数组位于terms
,因此它应该是:
jsonObj = {
bucket: {
terms: [],
images: [],
links: [],
videos: []
}
}
然后你添加这样的东西(我只是编写数据来源的表达式,因为你没有提供足够的信息让我知道它):
jsonObj.bucket.terms.push({
text: $(somefield).text(),
data: $(otherfield).val()
});