arrays - Perl Dancer - JSON 序列化器和 JSON 数组

标签 arrays json perl serialization dancer

我在使用内置 Perl Dancer 时遇到问题JSON 和 JSON 数组的序列化器。

我在 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 似乎可以按预期工作。我做错了什么?

最佳答案

我以为我有代码可以做到这一点,但是我错了。

我无法获取参数来解析任何深度的任何内容。也许这是设计使然,但我从文档中并不清楚。

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

注意:我使用 d 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 ) );


};

输出:

[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'
          }
        ];

关于arrays - Perl Dancer - JSON 序列化器和 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179458/

相关文章:

c++ - 程序可以掷 2 个骰子 36000 次

javascript - JSON.stringify 返回日期对象的错误值

regex - Perl split 函数 - 使用重复字符作为分隔符

linux - 如何检测特定版本的 Perl 中的操作系统名称?

perl - 为什么 IPC::Run3 在 Apache 环境中无法捕获任何标准输出?

php - 如何在多个文本字符串中使用数组或 in_array 进行 strpos

java - BufferedImage 字节数组操作影响相邻像素

php - 不能将 stdClass 类型的对象用作数组?

php - JSON 异常没有返回结果

c++ - 为什么总是避免在C/C++中使用多维数组进行数值计算?