0

これで私を助けてください、、、

all_tags という tcl 配列がありますが、ページでそれを javascript 配列に変換する必要がありますが、 javascript に関しては弱いです。

以下が正しいかどうかを教えてください。そうでない場合、正しい方法は何ですか?

<script>
var mytags = new Array();
<% 
foreach tag $all_tags {
     ns_puts [subst {
         mytags.push('$tag');
         }]
}
%>
</script>

その後、tcl proc で私の JavaScript 配列を使用することは可能ですか?

4

1 に答える 1

2

Tcl のデータを JSON に変換するにはjson::write、Tcllib のパッケージが必要です。Tcl 配列から JSON オブジェクトを作成するには、次のように使用します (同様のアプローチが Tcl ディクショナリでも機能します)。

package require json::write

set accumulate {}
foreach {key value} [array get yourArray] {
    lappend accumulate $key [json::write string $value]
}
set theJsonObject [json::write object {*}$accumulate]

Tcl リストを JSON 配列に変換するには:

package require json::write
set accumulate {}
foreach item $yourList {
    lappend accumulate [json::write string $value]
}
set theJsonArray [json::write array {*}$accumulate]

これら 2 つのケースでは、すべての値が JSON 文字列として表されると想定していることに注意してください。埋め込む値が数値 (またはtrueまたはfalse) の場合、特別なことをする必要はありません。Tcl が認識する値は、JSON リテラルとして問題なく機能します。リスト/配列/ディクテーションを埋め込むには、「再帰的」な使用json::writeともう少し計画が必要です。Tcl と JSON では型の概念が大きく異なるため、自動ではありません。

于 2013-06-25T19:35:20.140 に答える