我有一个非常简单但复杂的问题要问。我正在开发facebook messenger bot并陷入一个问题:
我的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://messengerdemo.parseapp.com/img/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://messengerdemo.parseapp.com/img/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
}]
按钮也一样。任何想法如何明智地执行它?哦,是的,我正在使用带有Express和LokiJS的Node.JS来实现数据库。 (虽然这是更多的JS算法问题)。
感谢您的时间。
答案 0 :(得分:2)
您无需创建JSON 。您必须使用JS对象,然后您可以按原样将它们发送到客户端,或者使用JSON.stringify()
来获取您的JSON。
通过这种方式,您将拥有
var elements = [];
//loop through db elements:
elements.push(element_from_db);
//end_loop
然后
messageData.payload.elements = elements;