PerlIO::via::json - PerlIO layer to convert to and from JSON


PerlIO-via-json documentation Contained in the PerlIO-via-json distribution.

Index


Code Index:

NAME

Top

PerlIO::via::json - PerlIO layer to convert to and from JSON

SYNOPSIS

Top

  use PerlIO::via::json;
  open my $fh, '<:via(json)', 'file.xml' or die "...: $!";
  my $json = <$fh>;

  open my $fh, '>:via(json)', 'file.xml' or die "...: $!";
  print $fh '{"key":"value"}';

DESCRIPTION

Top

This module implements a PerlIO layer that converts a file to or from JSON format.

In fact, it currently only supports converting between XML and JSON, but hopefully it will eventually support formats other than XML. Any suggestions?

Note: The XML<->JSON conversion relies on XML::XML2JSON. The XML file will be slurped and parsed all at once.

Note: this is only version 0.01, eh?

SEE ALSO

Top

XML::XML2JSON

AUTHORS

Top

Scott Lanning <slanning@cpan.org>.

Ideas and/or code taken freely from other PerlIO::via modules, particularly those of Elizabeth Mattijsen (esp. PerlIO::via::QuotedPrint).

LICENSE

Top

Copyright 2009, Scott Lanning. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


PerlIO-via-json documentation Contained in the PerlIO-via-json distribution.

package PerlIO::via::json;

use 5.008001;
use strict;
use warnings;

our $VERSION = '0.01';

use XML::XML2JSON;


### PerlIO::via interface

sub PUSHED {
    bless {
        obj => XML::XML2JSON->new()
    }, $_[0];
}

sub FILL {
    my ($self, $fh) = @_;

    local $/;
    my $t = <$fh>;
    (defined $t) ? $self->{obj}->xml2json($t) : undef;
}

sub WRITE {
    my ($self, $buf, $fh) = @_;
    if (print $fh $self->{obj}->json2xml($buf)) {
        return length($buf);
    }
    else {
        return -1;
    }
}

1;
__END__