Jquery-Formulate json对象

时间:2014-03-12 16:00:21

标签: jquery json

我必须使用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()
        });

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

jsonObj.bucket是一个对象,而不是数组,因此您无法在其上调用push。该数组位于terms,因此它应该是:

jsonObj = {
    bucket: {
        terms: [],
        images: [],
        links: [],
        videos: []
    }
}

然后你添加这样的东西(我只是编写数据来源的表达式,因为你没有提供足够的信息让我知道它):

jsonObj.bucket.terms.push({
    text: $(somefield).text(),
    data: $(otherfield).val()
});