2013-06-25 3 views
0

이 저를 도와주십시오 TCL 배열에서 자바 스크립트 배열 ,,,내가 all_tags라는 TCL의 배열을

을 만들 ,,하지만 일이 내 페이지하지만 난에 자바 스크립트 배열로 변환 할 필요가있다하는 방법 자바 스크립트에 관해서는 약하다.

아래의 내용이 정확하면 알려주세요. 올바른 방법이 무엇입니까?

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

그런 다음 tcl proc에서 내 javascript 배열을 사용할 수 있습니까?

+0

배열이나 목록입니까? Tcl 배열은 JS 배열보다 JS 객체와 비슷합니다 (Tcl 목록과 비슷합니다). –

+0

잘 tcl 배열했지만 지금은 {키 값} (키 값) ....} ,,의 tcl 목록으로 설정 한 및 키 및 값을 자바 스크립트 배열을 돌려야합니다. 제발 도와 주실 수 있나요? – sisimh

답변

1

Tcl에서 JSON으로 데이터를 변환하려면 Tcllib의 json::write 패키지가 필요합니다. 당신은 Tcl의 배열에서 JSON 객체를 만들기 위해 다음과 같이 사용할 것 (그리고 유사한 접근 방식은 Tcl의 사전 작동) :

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

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] 

는 JSON 배열에 Tcl의 목록을 설정하려면

이 두 가지 경우에서 필자는 값이 모두 JSON 문자열로 표시된다고 가정했습니다. 포함 할 값이 숫자 (또는 true 또는 false)이면 특별한 작업을 수행 할 필요가 없습니다. Tcl과 같은 값은 JSON 리터럴로 잘 작동한다는 것을 알 수 있습니다. 삽입 목록/배열/dicts는 json::write의 "재귀 적"사용과 조금 더 계획이 필요합니다. Tcl과 JSON은 유형에 대한 개념이 매우 다르므로 자동이 아닙니다.

+0

달성하고자하는 구체적인 것이 있다면, 다른 질문에 더 자세히 설명해주십시오. 그러면 도움이되는 답변을 더 잘 찾을 수 있습니다. –

+0

많은 감사합니다! 예, json 목록으로 바뀌 었습니다. :) tcl 배열에서 일어나는 변화를 기반으로 선택 목록의 내용을 계속 변경하기 위해 사용하고 싶습니다. D 많은 감사합니다. @Donal Fellows – sisimh