2014-03-12 71 views
0

我必須使用jQuery來形成json輸出。 這個json消息需要表示的是一個名爲'bucket'的項目集合。該集合將包含圖像元素,鏈接元素,術語元素或視頻元素。在每個類別的元素中將存在多少項不是預先指定的,而是動態的。在繼續使用jQuery之前,我決定將json輸出看作下面的內容,但不確定這是否正確。Jquery-Formulate 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

jsonObj.bucket是一個對象,而不是一個數組,所以你不能在它上面調用push。該陣列是terms,所以它應該是:

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

然後添加到它像這樣的東西(我只是彌補了數據來源,表情因爲你還沒有給予足夠的信息對我來說):

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

非常感謝。它爲我工作! – user2008973