javascript - 将 json 拆分为轮播卡片
问题描述
我从 JSON 文件中获取结果,我想在轮播中显示它,我该怎么做?
这是代码:
var req = http.request(options, function (res) {
console.log('STATUS: ' + res.statusCode);
if (res.statusCode !== 201) {
session.send("Sorry, service is not reachable at the moment, please try again later");
}
//session.send(res.statusCode.toString());
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
var json = chunk.toString();
var graph = JSON.parse(json);
var attachmentList = [];
for (var i = 0; i < graph.clauses.length; i++) {
var obj = graph.clauses[i];
console.log(obj);
var clause_id;
var clause_text;
for (var key in obj) {
clause_id = key;
clause_text = obj[key].toString();
// session.send(clause_id+"<br>"+clause_text);
}
let card = new botbuilder_1.HeroCard(session)
.title(clause_id)
.subtitle(clause_text)
.buttons([botbuilder_1.CardAction.imBack(session, 'Mark as Relevant', 'Mark as Relevant')]);
let msg = new botbuilder_1.Message(session);
msg.attachmentLayout(botbuilder_1.AttachmentLayout.carousel);
msg.attachments([card]);
session.send(msg);
// session.endDialog(msg);
}
});
});
这是结果的屏幕截图:
解决方案
您在 for 循环的每次迭代中都发送一条消息,并且每条消息只有一个附件。尝试在 for 循环之后发送一条消息,并将整个附件列表提供给该消息。
var attachmentList = [];
for (var i = 0; i < graph.clauses.length; i++) {
var obj = graph.clauses[i];
console.log(obj);
var clause_id;
var clause_text;
for (var key in obj) {
clause_id = key;
clause_text = obj[key].toString();
// session.send(clause_id+"<br>"+clause_text);
}
let card = new botbuilder_1.HeroCard(session)
.title(clause_id)
.subtitle(clause_text)
.buttons([botbuilder_1.CardAction.imBack(session, 'Mark as Relevant', 'Mark as Relevant')]);
attachmentList.push(card);
}
let msg = new botbuilder_1.Message(session);
msg.attachmentLayout(botbuilder_1.AttachmentLayout.carousel);
msg.attachments(attachmentList);
session.send(msg);
推荐阅读
- c++ - 可以通过复制来初始化一组吗?
- node.js - SSL 上的 Nginx 代理传递不考虑监听 URL
- python - 为什么我不能在 qt 设计器中向 textBrowser 添加列表?
- c - C 中的电子表格应用程序
- swift - 为什么在复制实例变量时出现“尝试注销未知的 __weak 变量”?
- ios - 如何从 String Swift 中删除 '\u{ef}' 字符
- java - Selenium(JAVA) Grid 仅在 Windows 中启动 10 个并行浏览器
- javascript - 如何使用 javascript 编写 firebase 参考查询?
- go - 为 vscode 项目/终端设置 $GOPATH
- java - 不建议在没有服务器身份验证的情况下建立 SSL 连接