问题描述
我的代码:
onChange
结果是:
.onChange(of: selectedTab) { newValue in
model.myFunction(item: newValue)
}
但是我试图得到:
var keyBoardData = [];
var menu = ['Nightclub','Parks'];
for (var i = 0; i < menu.length; i++) {
keyBoardData.push([{'text': menu[i],'callback_data': '{"a":(menu[i]),"b":(menu[i])}' }]);
}
var keyBoard = {"inline_keyboard": keyBoardData};
使用电报bot API和Google表格应用脚本。 需要将列数据显示为电报中的“按钮”,并且在选择按钮时需要使用callback_data过滤工作表数据并返回结果。
在这里有问题:'{“ a” :( menu [i]),“ b” :( menu [i])}'这适合嵌入式键盘,但menu [i])被当作文本。 如果我删除单引号,则可以获取数据,但嵌入式键盘不起作用。
任何建议。
解决方法
请勿通过对字符串进行硬编码来创建json。
使用JSON.stringify()
和URLSearchParams()
格式化所需的数据;
使用相同数据的示例;结果如下;
// Create keyBoard data
var keyBoardData = [];
var menu = ['Nightclub','Parks'];
for (var i = 0; i < menu.length; i++) {
keyBoardData.push({
text: menu[i],callback_data: menu[i]
});
}
// Create fetch options
var requestOptions = new URLSearchParams({
reply_markup: JSON.stringify({ "inline_keyboard": [ keyBoardData ]}),chat_id: 12345678,text: 'Test Keyboard'
}).toString();
// Send test
const token = '1134534202?????????????';
fetch("https://api.telegram.org/bot" + token + "/sendMessage?" + requestOptions)
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.log('error',error));