请帮助我,,,
我有一个名为all_tags的tcl数组,但问题是我需要将它转换为我的页面中的javascript数组,但是当涉及到javascript时我很弱。
如果以下是正确的,请告诉我,如果没有,那么正确的方法是什么?
<script>
var mytags = new Array();
<%
foreach tag $all_tags {
ns_puts [subst {
mytags.push('$tag');
}]
}
%>
</script>
之后是否可以在tcl proc中使用我的javascript数组?
答案 0 :(得分:2)
要将Tcl中的数据转换为JSON,您需要来自Tcllib的json::write
包。你可以像这样使用它从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]
请注意,在这两种情况下,我假设这些值都表示为JSON字符串。如果要嵌入的值是数字(或true
或false
),则无需执行任何特殊操作;作为Tcl的值,它们可以像JSON文字一样正常工作。嵌入列表/数组/ dicts需要“{递归”使用json::write
以及更多计划 - 它不是自动的,因为Tcl和JSON具有非常不同的类型概念。