TCL到JSON:使用huddle模块转换为json时的tcl数据的规范

时间:2017-11-03 10:30:28

标签: json tcl

让我们考虑如下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
{"a":[{"c":1},{"d":[2,2,2],"e":3}],"b":[{"f":4,"g":5}]}

这里我已经将tcl数组的结构指定为{dict * {list {dict d list}}}。但是,我想自动化这部分(不想手动查找结构)。

我能够确定字符串,列表和字典的类型,但无法找到此类变量的类型或更复杂。

请以相同的方式发布任何建议或其他方式。

1 个答案:

答案 0 :(得分:2)

如果你愿意的话,Tcl是无类型的,或者是“免费的”。这是它的优势之一,但它也意味着在将Tcl与JSON等类型格式连接时,您将不得不做一些工作。

您无法自动创建任意Tcl数据的完整且可靠的泛型类型描述。

蜷缩的目的是协助向Tcl数据添加类型信息,同时保留其“可用性”,但仍需要您对数据模型的理解,并且必须手动表示为代码。

当然可以自动创建特定于域的Tcl数据的特定类型描述。您的示例中的数据似乎难以理解,但如果存在始终保持的规则(整数字符串总是整数标量或整数数组等),则这些规则可用于驱动杂乱的格式生成器。