2012-11-23 2 views
5

나는 template toolkit 프레임 워크에서 일하고있다. 내 tt 파일에 perl 해시 데이터 형식이 있습니다. 이 해시 데이터 유형을 javascript 해시 데이터 유형으로 변환하고 싶습니다.자바 해시에 perl 해시를 convet하는 방법

코드 : 템플릿 :

 [% PERL %] 
     use JSON qw(encode_json); 

     my $vars = { 

      'version' => 3.14, 
      'days'  => [ qw(mon tue wed thu fri sat sun) ], 
      'cgi'  => CGI->new(), 
      'me'  => { 
       'id'  => 'abw', 
       'name' => 'Andy Wardley', 
      }, 
     }; 

     my $json = encode_json($vars->{'me'}); 
    [% END %] 


<script> 
    function callme(){ 
    var me = [% $json %] 
    } 
</script> 

지금 내가 자바 스크립트

+3

질문은 흥미 롭습니다. 그러나 코드없이 대답하는 것은 불가능합니다. –

+0

펄 : 내 $가 바르 = { '버전'=> 3.14, '일'=> [QW (월 화 수 목은 금 토 일), 'CGI'=> CGI-> 새로운() 'me'=> {id '=>'abw ', 'name '=>'Andy Wardley ', }, }; 템플릿 :이 버전은 Email [% me.name %]

이다 % 버전 %]

ID : [% me.id %] 이름 : [%의 me.name의 %]를 은 지금은에 나 해시를 원하는 자바 스크립트에서 액세스 할 수 있습니다. – Kalai

+0

@Kalai 질문을 편집 한 다음 주석에 추가하는 대신 (코드 형식을 사용하여) 추가하십시오. 댓글이기 때문에 읽기 어렵고 놓치기 쉽습니다. – Thor84no

답변

2

은 CPAN에서 JSON를 사용하여보십시오 나 해시 액세스 할 수 있도록합니다. 그것은 JavaScript Simple Object Notation이고 자바 스크립트에서 직접 사용합니다.

use JSON qw(encode_json); 

my $vars = { 

    'version' => 3.14, 
    'days'  => [ qw(mon tue wed thu fri sat sun) ], 
    'cgi'  => CGI->new(), 
    'me'  => { 
     'id'  => 'abw', 
     'name' => 'Andy Wardley', 
    }, 
}; 
print encode_json($vars->{'me'}); 

출력 :

{"name":"Andy Wardley","id":"abw} 
+0

encode_json ($ vars -> { 'me'}); tt 파일에? – Kalai

+0

''use''했다면, tt에서'JSON :: encode_json'을 말할 수 있어야합니다. – simbabque

+0

이 코드를 tt 파일에 넣으면 다음 오류가 발생합니다. JSON 모듈에서 "encode_json"을 내 보내지 않았습니다. – Kalai

3

이 템플릿에 원시 펄을 내장보다 더 나은 솔루션이 될 것입니다 어떤있는이 작업을 수행하기 위해 사용할 수있는 여러 가지 TT 플러그인이 있습니다. 개인적으로는 JSON::Escape을 선호하지만 몇 가지가 있습니다. 매일 매일 TT를 작성하는 데 5 년이 넘는 시간 동안, 나는 [% PERL %] 지시어를 사용하지 않아야합니다. 그래도 나는 CGI를 쓰지 않을거야. YMMV.

[%- USE JSON.Escape(pretty => 1); 
    SET me = { id => 'abw', name => 'Andy Wardley' }; 
... 
-%] 

<script> 
    function callme() { 
    var me = [% me.json %] 
    ... 
</script>