tcl json 输出到通道和 map/loop 项?
tcl json output to channel and map/loop items?
我正在尝试从 websocket 获取输出到 eggdrop tcl 脚本。websocket 部分正在工作,我得到这样的输出:
{
"action": "insert",
"row": {
"id": 7814727,
"name": "Doom_Squad-Countdown_To_Doomsday_II-WEB-2016-ESG",
"team": "ESG",
"cat": "MP3",
"genre": "",
"url": "",
"size": 0,
"files": 0,
"preAt": 1493884429,
"nuke": null
}
}
如何循环或映射项目?对我来说它看起来像 json 所以我尝试了以下操作:
这适用于同一站点的另一个输出,只有该输出包含 [ ]。
上面的输出没有,所以真的是json?
set asadict [::json::json2dict $body]
lmap item [dict get $asadict row] {
dict filter $item key name team cat genre size files preAt nuke
}
foreach item [dict get $asadict row] {
dict with item {
set humanReadableDate [clock format $preAt]
putquick "PRIVMSG $chan :[=13=]3\[[=13=]37PRE[=13=]3\][=13=]3\[[=13=]33$cat[=13=]3\][=13=]3 $name [=13=]3\[[=13=]312PRETIME[=13=]3\][=13=]3 [=13=]2$humanReadableDate[=13=]2 \[PRE-INFO\] \[Group: $team\] \[Size: $size MB\] \[Files: $files\] \[Genre: $genre\] \[Nuked: $nuke\]"
}
}
嗯,因为row
只有一个元素,所以不需要循环:
set asadict [::json::json2dict $body]
set item [dict get $asadict row]
dict filter $item key name team cat genre size files preAt nuke
dict with item {
set humanReadableDate [clock format $preAt]
putquick "PRIVMSG $chan :[=10=]3\[[=10=]37PRE[=10=]3\][=10=]3\[[=10=]33$cat[=10=]3\][=10=]3 $name [=10=]3\[[=10=]312PRETIME[=10=]3\][=10=]3 [=10=]2$humanReadableDate[=10=]2 \[PRE-INFO\] \[Group: $team\] \[Size: $size MB\] \[Files: $files\] \[Genre: $genre\] \[Nuked: $nuke\]"
}
当您尝试对其进行循环时,您实际上是一次循环遍历键和值。
我正在尝试从 websocket 获取输出到 eggdrop tcl 脚本。websocket 部分正在工作,我得到这样的输出:
{
"action": "insert",
"row": {
"id": 7814727,
"name": "Doom_Squad-Countdown_To_Doomsday_II-WEB-2016-ESG",
"team": "ESG",
"cat": "MP3",
"genre": "",
"url": "",
"size": 0,
"files": 0,
"preAt": 1493884429,
"nuke": null
}
}
如何循环或映射项目?对我来说它看起来像 json 所以我尝试了以下操作: 这适用于同一站点的另一个输出,只有该输出包含 [ ]。
上面的输出没有,所以真的是json?
set asadict [::json::json2dict $body]
lmap item [dict get $asadict row] {
dict filter $item key name team cat genre size files preAt nuke
}
foreach item [dict get $asadict row] {
dict with item {
set humanReadableDate [clock format $preAt]
putquick "PRIVMSG $chan :[=13=]3\[[=13=]37PRE[=13=]3\][=13=]3\[[=13=]33$cat[=13=]3\][=13=]3 $name [=13=]3\[[=13=]312PRETIME[=13=]3\][=13=]3 [=13=]2$humanReadableDate[=13=]2 \[PRE-INFO\] \[Group: $team\] \[Size: $size MB\] \[Files: $files\] \[Genre: $genre\] \[Nuked: $nuke\]"
}
}
嗯,因为row
只有一个元素,所以不需要循环:
set asadict [::json::json2dict $body]
set item [dict get $asadict row]
dict filter $item key name team cat genre size files preAt nuke
dict with item {
set humanReadableDate [clock format $preAt]
putquick "PRIVMSG $chan :[=10=]3\[[=10=]37PRE[=10=]3\][=10=]3\[[=10=]33$cat[=10=]3\][=10=]3 $name [=10=]3\[[=10=]312PRETIME[=10=]3\][=10=]3 [=10=]2$humanReadableDate[=10=]2 \[PRE-INFO\] \[Group: $team\] \[Size: $size MB\] \[Files: $files\] \[Genre: $genre\] \[Nuked: $nuke\]"
}
当您尝试对其进行循环时,您实际上是一次循环遍历键和值。