让我们考虑如下tcl数据:
set arr {a {{c 1} {d {2 2 2} e 3}} b {{f 4 g 5}}}
使用huddle模块转换为Json格式:
set json_arr [huddle jsondump [huddle compile {dict * {list {dict d list}}} $arr]]
puts $json_arr
Json冷冻阵列:
{
"a": [
{"c": 1},
{
"d": [
2,
2,
2
],
"e": 3
}
],
"b": [{
"f": 4,
"g": 5
}]
}
写一行:
set json_arr [huddle jsondump [huddle compile {dict * {list {dict d list}}} $arr] {} {}]
puts $json_arr
更新了Json格式的数组:
{"a":[{"c":1},{"d":[2,2,2],"e":3}],"b":[{"f":4,"g":5}]}
这里{} {}的含义是什么?
在json和json :: write module输出的情况下,我可以将它用于单行吗?
答案 0 :(得分:1)
jsondump
的最后三个可选参数是offset
,newline
和begin_offset
。您可以使用它们来指定用于格式化输出字符串的字符串。如果您不指定它们,将使用默认字符串。
如果确实指定了它们,则需要遵循可选参数的协议,即如果要指定begin_offset
,则还需要指定offset
和newline
等。在这种情况下,offset
和newline
被指定为空字符串,begin_offset
使用其默认值。
尝试使用虚拟值调用jsondump
以了解它们的使用方式:
% huddle jsondump [huddle compile {dict * {list {dict d list}}} $arr] <A> <B> <C>
{<B><C><A>"a": [<B><C><A><A>{"c": 1},<B><C><A><A>{<B><C><A><A><A>"d": [<B><C><A><A><A><A>2,<B><C><A><A><A><A>2,<B><C><A><A><A><A>2<B><C><A><A><A>],<B><C><A><A><A>"e": 3<B><C><A><A>}<B><C><A>],<B><C><A>"b": [{<B><C><A><A><A>"f": 4,<B><C><A><A><A>"g": 5<B><C><A><A>}]<B><C>}
在每个组件周围插入newline
和begin_offset
字符串,并在组件之前插入一个或多个offset
字符串以反映缩进级别。
json::write
使用indented
和aligned
子命令来自定义格式。