通过Catalyst框架将数据导出为JSON


export data to JSON through Catalyst framework

我使用MySQL创建了一个数据库,并将其连接到Catalyst框架,以便创建一个web界面。我必须使用d3.js来可视化我的数据,它以JSON格式获取数据。

我创建了一个php脚本,用于查询数据库并以JSON格式导出查询结果。

不幸的是,我还没有找到在catalyst中使用php脚本的方法。有没有更好的方法可以查询数据库并以JSON格式导出数据,以便在我的d3.js图表中使用它们?

非常感谢您的帮助。

您可以按照Julien的建议使用Catalyst::View::JSON,但对于简单的情况:

=== SomeController.pm ===
package MyApp::Controllers::SomeController;
use strict;
use warnings;
use base 'Catalyst::Controller';
use JSON;
sub my_json_action :Local {
    my ($self, $c, @args) = @_;
    my $result = ... some process or logic ...
    $c->res->body(to_json($result))
}
1;

这应该会将$result的JSONified版本返回给d3.js

如果你在你的应用程序中写了很多AJAX代码,我绝对建议你考虑一下C::V::JSON方法。

您可以通过Catalyst::View::JSON呈现JSON。

sub my_json_action :Local {
    my ($self, $c, @args) = @_;
    my $result = ... some process or logic ...
    $c->stash(
            'foo' => 'bar',
            'array' => [1,2],
    );
    $c->forward('MyApp::View::JSON');
}

这将生成以下JSON:

{"foo":"bar","array":[1,2]}

在MyApp.pm中,您可以确认行为或VIEW::JSON:

__PACKAGE__->config->{'View::JSON'} = {
        allow_callback  => 1,    # defaults to 0
#       callback_param  => 'bgm', # defaults to 'callback'
#       expose_stash    => [ qw(id status file error) ], # defaults to everything
};