2016-12-08 23 views
0

私はTCLで新しく、JSON文字列を持っています。パースやJavaのように簡単にハッシュ/データを印刷して印刷します。しかし私は私を助ける多くの情報源を見つけましたが、それは非常に少なく、まだそれを得ることができませんでした。TCL - パースJSONをハッシュ/配列に変換する

そして、私はこのような何かしてみてください:

#!/usr/bin/tclsh 
proc dict2json {dictVal} { 
    # XXX: Currently this API isn't symmetrical, as to create proper 
    # XXX: JSON text requires type knowledge of the input data 
    set json "" 

    dict for {key val} $dictVal { 
    # key must always be a string, val may be a number, string or 
    # bare word (true|false|null) 
    if {0 && ![string is double -strict $val] 
     && ![regexp {^(?:true|false|null)$} $val]} { 
     set val "\"$val\"" 
    } 
     append json "\"$key\": $val," \n 
    } 

    return "\{${json}\}" 
} 

set json {{"Object1":{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},"Object2":{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}}} 

puts [dict2json $json] 

私は他のソースから取得しますが、それは私にエラーを返すコードは、私はほとんどこの上怒って、誰でも助けることができますか?ありがとうございました。

+2

あなたはtcllibでJSONパッケージを試したことがありますか?それはあなたが望むことをするべきコマンドjson2dictを持っています。 –

答えて

1

最も賢明な方法は、既存のコードを使用することです:

jsonパッケージがたActiveTclに同梱されていませんが、あれば、 ` teacup install jsonでインストール、またはファイル json.tcljson_tcl.tclを、`取得することによってすることができ
% package require json 
1.3.3 

% set json {{"Object1":{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},"Object2":{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}}} 
{"Object1":{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},"Object2":{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}} 

% ::json::json2dict $json 
Object1 {Year 2012 Quarter Q3 DataType {Other 3} Environment STEVE Amount 125} Object2 {Year 2012 Quarter Q4 DataType {Other 2} Environment MIKE Amount 500} 

Tcl 8.5以降とpkgIndex.tclがあります。これらのファイルをTclが見つけられる場所に置きます(puts $auto_pathはあなたに場所のリストを与えます)。

ドキュメント: json (package)packageは、 set

関連する問題