# Copyright 2023 Tomas Brabec # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. package require json::write; proc isdict {dict} { expr { [catch { dict info $dict } ] ? 0 : 1 } } # modified version from https://wiki.tcl-lang.org/page/Tcllib+JSON proc dict2json {dict} { return [json::write object {*}[dict map {k v} ${dict} { if {[isdict $v]} { set v [dict2json $v]; } else { if {[llength ${v}] > 1} { set l {}; foreach r ${v} { lappend l [json::write string ${r}]; } set v [json::write array {*}${l}]; } else { set v [::json::write string $v]; } } }]]; }