tcl json вывод на канал и отображение / l oop элементов? - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь получить выходные данные из веб-сокета в сценарий eggdrop tcl ... веб-часть работает, и я получаю вывод, подобный этому:

{
    "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
    }
}

Как я могу oop или отобразить элементы? Для меня это выглядит как 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 :\003\[\0037PRE\003\]\003\[\0033$cat\003\]\003 $name \003\[\00312PRETIME\003\]\003 \002$humanReadableDate\002 \[PRE-INFO\] \[Group: $team\] \[Size: $size MB\] \[Files: $files\] \[Genre: $genre\] \[Nuked: $nuke\]"

    }
}

1 Ответ

1 голос
/ 08 января 2020

Ну, так как есть только один элемент row, вам не нужно l oop на нем:

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 :\003\[\0037PRE\003\]\003\[\0033$cat\003\]\003 $name \003\[\00312PRETIME\003\]\003 \002$humanReadableDate\002 \[PRE-INFO\] \[Group: $team\] \[Size: $size MB\] \[Files: $files\] \[Genre: $genre\] \[Nuked: $nuke\]"
}

Когда вы пытались l oop на нем, вы на самом деле просматривали ключи и значения по одному.

...