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

perl – Mojolicious – 无法解析RESTful中的JSON

发布时间:2020-12-16 06:07:13 所属栏目:大数据 来源:网络整理
导读:我不可能在Mojolicious中解析 JSON.我更新了Mojolicious并在使用之前使用了代码,但不推荐使用JSON- new. my $json = Mojo::JSON-new;my $user_request = $json-decode($c-req-body);my $err = $json-error; 从教程中,我发现已经添加了$self- req- json,但所
我不可能在Mojolicious中解析 JSON.我更新了Mojolicious并在使用之前使用了代码,但不推荐使用JSON-> new.

my $json = Mojo::JSON->new;
my $user_request = $json->decode($c->req->body);
my $err = $json->error;

从教程中,我发现已经添加了$self-> req-> json,但所有POST都会导致错误和非工作代码.

curl -H "Content-Type: application/json" --data @body.json http://localhost:3000/checkaddress

而我的body.json看起来像这样

{
       'id': 1
}

这是我在Mojolicious中的RESTful代码

post '/checkaddress' => sub {
my $self = shift;
my $dump = $self->dumper($self->req->json);
};

控制台日志

[Sat Feb 20 08:23:27 2016] [debug] 200 OK (0.001688s,592.417/s)
[Sat Feb 20 08:24:38 2016] [debug] POST "/checkaddress"
[Sat Feb 20 08:24:38 2016] [debug] Routing to a callback
[Sat Feb 20 08:24:38 2016] [debug] undef

调用$self-> req-> body然后从Mojo :: JSON调用decode_json将导致

[error] Malformed JSON: Expected string while parsing object at line 1,offset 5 at /home/aa/sempt2.pl line 15.

那么,现在如何正确解析JSON?

解决方法

这与Mojolicious 6.25一起使用,是一个完整的例子:

package MyREST;
use Mojo::Base 'Mojolicious';

use Data::Dumper;

sub startup {
  my $app = shift;

  my $routes = $app->routes;

  $routes->post('/checkaddress' => sub {
    my $self = shift;
    my $data = $self->req->json;
    my $dump = $self->dumper($self->req->json);
    print STDERR $dump;
    $self->render(json => $data);
  });

}

1;

为方便和可靠地测试小客户端脚本:

#!perl

use strict;
use warnings;

use Mojo::UserAgent;

my $ua = Mojo::UserAgent->new;

my $tx = $ua->post('http://localhost:3000/checkaddress' => json =>
  {
    'id'  => "1",}
);

此脚本可避免JSON编码问题.

更好的是,以Mojolicious风格编写测试.

(编辑:李大同)

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

    推荐文章
      热点阅读