我尝试使用模板工具包获取此数据,但我无法获取。
$var1={
'Object'=>[
{
'Component'=>[
{
'type'=>'analog',
'name'=>'Temp',
'value'=>'23'
},
{
'type'=>'digital',
'name'=>'Temp',
'value'=>'22'
},
{
'type'=>'analog',
'name'=>'pressure',
'value'=>'23'
},
{
'type'=>'analog',
'name'=>'humidity',
'value'=>'23'
}
]
}
],
};
我试过这个
[% FOREACH st IN Object %]
[% FOREACH st IN Object.Component %]
[% Component.type %][% Component.name %][% Component.value %]
[% END %]
[% END %]
我无法获取值,并且它没有给出任何错误,请帮助如何获取此值。
答案 0 :(得分:1)
将模板更改为:
[% FOREACH obj IN Object %]
[% FOREACH comp IN obj.Component %]
[% comp.type %] [% comp.name %] [% comp.value %]
[% END %]
[% END %]
答案 1 :(得分:1)
您有两个st
个变量。我不记得TT究竟是如何处理范围的,但我怀疑这不是一件好事。您还尝试从名为Component
的变量中提取值。您尚未实例化名为component的变量。请记住,如果你引用一个不存在的变量,TT在正常情况下不会给你一个错误,它根本不输出任何内容。
如果您想更改它以便收到错误,则需要设置STRICT配置选项。或者,设置其中一个调试选项:
my $template = Template->new(
{
STRICT => 1, # or
DEBUG => 'undef'
});
尝试类似:
[% FOREACH obj in Object %]
[% FOREACH item in obj.Component %]
[% obj.type %] [% obj.name %] [% obj.value %]
[% END %]
[% END %]