GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  DBIX::CLASS::HELPER::ROW::TOJSON (3)

.ds Aq ’

NAME

DBIx::Class::Helper::Row::ToJSON - Remove the boilerplate from your TO_JSON functions

CONTENTS

SYNOPSIS



 package MyApp::Schema::Result::KittenRobot;

 use parent DBIx::Class::Core;

 __PACKAGE__->load_components(qw{Helper::Row::ToJSON});

 __PACKAGE__->table(KittenRobot);
 __PACKAGE__->add_columns(
    id => {
       data_type         => integer,
       is_auto_increment => 1,
    },
    kitten => {
       data_type         => integer,
    },
    robot => {
       data_type         => text,
       is_nullable       => 1,
    },
    your_mom => {
       data_type         => blob,
       is_nullable       => 1,
       is_serializable   => 1,
    },
 );

 1;



This helper adds a JSON method like the following:



 sub TO_JSON {
    return {
       id       => $self->id,
       kitten   => $self->kitten,
       # robot  => $self->robot,    # <-- doesnt serialize text columns
       your_mom => $self->your_mom, # <-- normally wouldnt but explicitly
                                    #     asked for in the column spec above
    }
 }



METHODS

    _is_column_serializable



 $self->_is_column_serializable(kitten)



returns true if a column should be serializable or not. Currently this marks everything as serializable unless is_serializable is set to false, or data_type is a blob, text, or ntext columns. If you wanted to only have explicit serialization you might override this method to look like this:



 sub _is_column_serializable {
    my ( $self, $column ) = @_;

    my $info = $self->column_info($column);

    return defined $info->{is_serializable} && $info->{is_serializable};
 }



    serializable_columns



 $self->serializable_columns



simply returns a list of columns that TO_JSON should serialize.

    TO_JSON



 $self->TO_JSON



returns a hashref representing your object. Override this method to add data to the returned hashref:



 sub TO_JSON {
    my $self = shift;

    return {
       customer_name => $self->customer->name,
       %{ $self->next::method },
    }
 }



AUTHOR

Arthur Axel fREW Schmidt <frioux+cpan@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Arthur Axel fREW Schmidt.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 DBIX::CLASS::HELPER::ROW::TOJSON (3) 2015-11-07

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.