【问题标题】:Printing JSON-formatted data in Tcl在 Tcl 中打印 JSON 格式的数据
【发布时间】:2012-04-24 21:35:25
【问题描述】:

您好,我需要在 tcl 中打印以下内容。

{'root':[{'name':'Test', 'val':'1'},{'name':'Test2', 'val':'3'}]}

当我执行以下操作时出现错误

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

有没有办法可以在 tcl 中打印这些内容?

好的,我现在试过了:

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

但这也不起作用

【问题讨论】:

  • 从 Tcl 生成 JSON 的主要问题是类型系统根本不适合,这使得决定如何序列化一个值非常困难。 (不过,往另一个方向走很容易。)

标签: json tcl


【解决方案1】:

记住'['表示你想执行某事,所以你需要转义它。

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

通过这些更改,应该可以工作。

此外,您可以在此处找到更多关于如何在 tcl 中管理 JSON 的示例:http://wiki.tcl.tk/13419

【讨论】:

  • 所以你的意思是每次遇到 [ 时都用反斜杠转义它?
  • 总是你不想执行括号内的内容。在此处查看更多信息:tcl.tk/man/tcl8.5/tutorial/Tcl5.html
  • 一旦定义了 $val 和 $name 值,上一行就可以正确打印了,但也许你想要别的东西?
  • @user856753,请注意,在您的情况下,使用简单的变量替换 ($var) 是不够的:如果替换的值包含文字逗号或更有趣的东西,例如 aaa'}, {,它会爆炸。因此,请密切关注 wiki 上关于 JSON 的that link,因为它讨论了正确转义构成 JSON 对象的值的方法。
【解决方案2】:

只是

puts {{'root':[{'name':'Test', 'val':'1'},{'name':'Test2', 'val':'3'}]}}

也就是说,将整个字符串放在{} 之间,使其成为“文字”。

更多信息在the tutorial

【讨论】:

  • 事实上我误读了你的问题,没有得到第一个 sn-p 只是你想从第二个得到什么的演示,对不起。无论如何,我认为不删除我的回答尝试是可以的,因为它涉及另一个使用 JSON 的可能用例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
相关资源
最近更新 更多