在Tcl中打印JSON格式的数据

在Tcl中打印JSON格式的数据,json,tcl,Json,Tcl,您好,我需要打印以下内容,因为它是在tcl {'root':[{'name':'Test', 'val':'1'},{'name':'Test2', 'val':'3'}]} 有没有办法在tcl中打印这些内容 好的,我现在试过了: puts "{'root':\[{'name':'$name', 'val':'$id'}" 但是这也不行记住,“[”意味着你想要执行某个东西,所以你需要逃避它 puts "{'root':\[{'name':'$name', 'val':'$val'},{'nam

您好,我需要打印以下内容,因为它是在tcl

{'root':[{'name':'Test', 'val':'1'},{'name':'Test2', 'val':'3'}]} 有没有办法在tcl中打印这些内容

好的,我现在试过了:

puts "{'root':\[{'name':'$name', 'val':'$id'}"

但是这也不行

记住,“[”意味着你想要执行某个东西,所以你需要逃避它

puts "{'root':\[{'name':'$name', 'val':'$val'},{'name':'$name','val':'$val'}\]}"
有了这些变化,我们应该会成功

此外,您可以在这里找到更多关于如何在tcl中管理JSON的示例:

它只是

puts {{'root':[{'name':'Test', 'val':'1'},{'name':'Test2', 'val':'3'}]}}
也就是说,将整个字符串放在
{
}
之间,使其成为“文本”


更多信息在这里。

所以你的意思是每次遇到[用反斜杠转义它?总是你不想执行括号内的内容。请参阅此处的更多信息:$val和$name值都定义好后,前一行会正确打印,但可能你还需要其他内容?@user856753,注意使用简单的变量替换(
$var
)在您的情况下是不够的:如果替换的值包含一个文字逗号或更有趣的东西,如
aaa'},{
。因此,请密切关注wiki上关于JSON的内容,因为它讨论了正确转义构成JSON对象的值的方法。事实上,我误读了你的问题,没有明白第一个片段只是演示了你想从第二个片段中得到什么,对不起。无论如何,我认为不删除我的尝试是可以的回答是因为它处理了使用JSON的另一个可能的用例。从Tcl生成JSON的主要问题是类型系统之间根本不匹配,这使得决定如何序列化一个值非常困难(但朝另一个方向去很容易)
puts {{'root':[{'name':'Test', 'val':'1'},{'name':'Test2', 'val':'3'}]}}