加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl Dancer – JSON序列化程序和JSON数组

发布时间:2020-12-16 06:18:06 所属栏目:大数据 来源:网络整理
导读:我在使用内置的用于 JSON和 JSON数组的Perl Dancer序列化程序时遇到问题. 我在app.pl文件中激活了序列化程序: #!/usr/bin/env perluse Dancer;use main;set serializer = 'JSON';dance; 在模块本身中,我测试了JSON解析,如下所示: post '/test/' = sub { my
我在使用内置的用于 JSON和 JSON数组的Perl Dancer序列化程序时遇到问题.

我在app.pl文件中激活了序列化程序:

#!/usr/bin/env perl
use Dancer;
use main;

set serializer => 'JSON';

dance;

在模块本身中,我测试了JSON解析,如下所示:

post '/test/' => sub {
    my $params = request->params;

    debug('Test: ',$params);
};

现在我想确保按预期解析JSON,所以我尝试使用cURL来理解序列化器的工作方式:

curl -H "Content-Type: application/json" -X POST http://localhost:3000/test/ -d '{ "Name" : "foo","email" : "bar" }'

结果如预期:

Test: {'Name' => 'foo','email' => 'bar'}

但是试图发送一个数组:

curl -H "Content-Type: application/json" -X POST http://localhost:3000/test/ -d '[{ "Name" : "foo","email" : "bar" }]'

导致:

Test: {}

我希望序列化程序返回一个数组引用,但它似乎返回一个空哈希.我尝试反过来使用序列化程序,但编码JSON似乎按预期工作.我做错了什么?

解决方法

以为我有代码执行此操作,但是,错了.

我无法让params解析任何深度的东西.也许这是设计但是,从文档中我并不是很清楚.

直接使用from_json函数,您可以解析包含POST’d JSON字符串的request-> body:

注意:我使用Data :: Dumper打印变量内容,试图让它更清晰一些.

post '/test/' => sub {
 #my @params =   params  ;
 #my @params =   request->body;
 my $body = request->body;

 my $j_O = from_json( $body );

 #deubg( 'Test1: ' . Dumper( request->body ) );
 #debug( 'Test2: ' . Dumper( request->params ) );
 #debug( 'Test3: ' . Dumper( { params }  ) );
 debug( 'Test4: ' . Dumper( $body ) );
 debug( 'Test5: ' . Dumper( $j_O ) );


};

OUTPUT:

[27993] debug @0.001528> [hit #2]Test4: $VAR1 = '[ { "Name" : "foo","email" : "bar" },{ "Name" : "bar"} ]'; in /media/truecrypt1/Projects/Perl5+/Dancer/Test/lib/Test.pm l. 23
[27993] debug @0.001772> [hit #2]Test5: $VAR1 = [
          {
            'email' => 'bar','Name' => 'foo'
          },{
            'Name' => 'bar'
          }
        ];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读