NAME
JSON::T - transform JSON using JsonT
SYNOPSIS
my $jsont = slurp('foo/bar.js');
my $input = slurp('foo/quux.json');
my $JSONT = JSON::T->new($jsont);
print $JSONT->transform($input);
DESCRIPTION
This module implements JsonT, a language for transforming JSON-like
structures, analogous to XSLT in the XML world.
JsonT is described at . JsonT is a
profile of Javascript; this module uses the pure Perl Javascript
implementation JE for Javascript support. An alternative implementation
using Mozilla's libjs is provided as JSON::T::SpiderMonkey.
This module provides a similar API to XML::Saxon::XSLT2.
Constructor
"JSON::T->new($code, $name)"
Constructs a new JSON::T transformation. $code is the JsonT
Javascript code. As a JsonT file can contain multiple (potentially
unrelated) transformations, the name of the particular
transformation you want to use should also be provided. If $name is
omitted, then the name "_main" is assumed.
Methods
"parameters(param1=>$arg1, param2=>$arg2, ...)"
Sets global variables available to the Javascript code. All
arguments are treated as strings.
"transform($input)"
Run the transformation. The input may be a JSON string, a
JSON::JOM::Node or a native Perl nested arrayref/hashref structure,
in which case it will be stringified using the JSON module's to_json
function. The output (return value) will be a string.
"transform_structure($input)"
Like "transform", but attempts to parse the output as a JSON string
and return a native Perl arrayref/hashref structure. This method
will fail if the output is not a JSON string.
Javascript Execution Environment
JSON::T is a profile of Javascript. This module runs scripts via JE. As
this is not a browser environment, many global objects familiar to
browser Javascript developers are not available.
A single global object called "JSON" is provided with methods
"stringify" and "parse" compatible with the well-known json2.js library
(), and a method "transform(obj,jsont)"
that provides a Javascript JsonT implementation.
A function "print_to_perl" is provided which prints to Perl's STDOUT
stream.
BUGS
Please report any bugs to .
SEE ALSO
Specification: .
Related modules: JSON, JSON::Path, JSON::GRDDL, JSON::Hyper,
JSON::Schema.
JOM version: JSON::JOM, JSON::JOM::Plugins::JsonT.
Requires: JSON, JE.
AUTHOR
Toby Inkster .
This module is embeds Stefan Goessner's Javascript implementation of
JsonT (version 0.9) to do the heavy lifting.
COPYRIGHT AND LICENCE
Copyright 2006 Stefan Goessner.
Copyright 2008-2010 Toby Inkster.
Licensed under the Lesser GPL:
.