2012-04-24 104 views
1

您好我需要打印以下內容,因爲它在tcl中。在Tcl中打印JSON格式的數據

{'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'}" 

但是,這並不工作要麼

+0

從Tcl生成JSON的主要問題是類型系統根本不適合彼此,這決定了如何序列化一個非常困難的值。 (朝着另一個方向很容易。) – 2012-04-25 08:21:20

回答

2

記住,「[」意味着你要執行的東西,所以你需要逃避它。

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

隨着這些變化,應該工作。

此外,你可以找到如何在TCL這裏管理JSON例子:http://wiki.tcl.tk/13419

+0

所以你的意思是每一次[遇到反斜槓都逃過它? – Micheal 2012-04-24 21:50:00

+0

我試過它沒有工作 – Micheal 2012-04-24 21:52:50

+0

總是你不想執行括號內的內容。在這裏查看更多信息:http://www.tcl.tk/man/tcl8.5/tutorial/Tcl5.html – 2012-04-24 21:54:06

1

這只是

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

也就是說,把{}之間的整個字符串,使之「字面」。

更多的信息在the tutorial

+0

謝謝..這兩個你的答案的結合爲我工作! – Micheal 2012-04-24 23:08:12

+0

事實上,我誤解了你的問題,沒有得到第一個片段僅僅是你想從第二個片段中得到什麼的示範,對不起。無論如何,我認爲可以不刪除我的回答,因爲它處理另一個使用JSON的用例。 – kostix 2012-04-24 23:32:59