2017-11-03 25 views
0

に変換する密談モジュールを使用しながら、次のように私たちはTCLのデータを見てみましょう:TCL:TCLデータの仕様は、JSON

密談モジュールを使用してJSON形式に変換
set arr {a {{c 1} {d {2 2 2} e 3}} b {{f 4 g 5}}} 

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}}}と指定しました。しかし、私はこの部分を自動化したい(手動で構造を見つけたくない)。

文字列、リスト、および辞書のタイプを判別できますが、そのような変数のタイプやこれより複雑なタイプを見つけることができません。

同じような提案やその他の方法を投稿してください。

答えて

2

Tclはタイプレスです。そうであれば "タイプフリー"です。それはその強みの1つですが、TclとJSONのような型指定されたフォーマットとのインターフェースをとるときには、いくつかの作業をしなくてはなりません。

任意のTclデータの完全で信頼性の高いジェネリックタイプ記述を自動的に作成することはできません。

Huddleのポイントは、Tclデータに「プロセス」を保存しながらタイプ情報を追加するのに役立ちますが、データモデルの理解はまだ必要であり、手動でコードとして表現する必要があります。

あなたはです。はもちろん、ドメイン固有のTclデータの特定のタイプ記述を自動的に作成します。あなたの例のデータは理解できないようですが、常に保持する規則(整数の文字列は常に整数スカラまたは整数配列など)がある場合、これらの規則を使用して、集まったフォーマットジェネレータを駆動することができます。