NAME
MooX::JSON_LD - Extend Moo to provide JSON-LD mark-up for your objects.
SYNOPSIS
# Your Moo (or Moose) Class
package
My::Moo::Class;
use
Moo;
has
first_name
=> (
is
=>
'ro'
,
# various other properties...
json_ld
=> 1,
);
has
last_name
=> (
is
=>
'ro'
,
# various other properties...
json_ld
=> 1,
);
has
birth_date
=> (
is
=>
'ro'
,
# various other properties...
json_ld
=>
'birthDate'
,
json_ld_serializer
=>
sub
{
shift
->birth_date },
);
# Then, in a program somewhere...
use
My::Moo::Class;
my
$obj
= My::Moo::Class->new({
first_name
=>
'David'
,
last_name
=>
'Bowie'
,
birth_date
=>
'1947-01-08'
,
});
# print a text representation of the JSON-LD
$obj
->json_ld;
# print the raw data structure for the JSON-LD
use
Data::Dumper;
Dumper
$obj
->json_ld_data;
DESCRIPTION
This is a companion module for MooX::Role::JSON_LD. It extends the has
method to support options to add attributes to the json_ld_fields
and create the json_ld_type
.
To declare the type, add it as the option when importing the module, e.g.
Moo attributes are extended with the following options:
json_ld
-
has
headline
=> (
is
=>
'ro'
,
json_ld
=> 1,
);
This adds the "headline" attribute to the
json_ld_fields
.has
alt_headline
=> (
is
=>
'ro'
,
json_ld
=>
'alternateHeadline'
,
);
This adds the "alt_headline" attribute to the
json_ld_fields
, with the label "alternateHeadline". json_ld_serializer
-
has
birth_date
=> (
is
=>
'ro'
,
isa
=> InstanceOf[
'DateTime'
],
json_ld
=>
'birthDate'
,
json_ld_serializer
=>
sub
{
shift
->birth_date->ymd },
);
This allows you to specify a method for converting the data into an object that JSON can serialize.
AUTHOR
Robert Rothenberg <rrwo@cpan.org>
SEE ALSO
COPYRIGHT AND LICENSE
Copyright (C) 2018, Robert Rothenberg. All Rights Reserved.
This script is free software; you can redistribute it and/or modify it under the same terms as Perl itself.