NAME

WWW::Metaweb::JSONLikePerl - Access a JSON string like a Perl structure

SYNOPSIS

  use strict;
  use WWW::Metaweb::JSONLikePerl qw(:standard);

  my json = qq({
        "cover_appearances": [
          {
            "part_of_series": "Runaways", 
            "type": "/comic_books/comic_book_issue", 
            "name": "Runaways Vol 1 #1"
          }, 
          {
            "part_of_series": "Runaways", 
            "type": "/comic_books/comic_book_issue", 
            "name": "Runaways Vol. 2 #1"
          }, 
          {
            "part_of_series": "Mystic Arcana", 
            "type": "/comic_books/comic_book_issue", 
            "name": "Mystic Arcana Book IV: Fire"
          }
        ], 
        "name": "Nico Minoru", 
        "created_by": ["Brian K. Vaughan"], 
        "/type/object/creator": "/user/metaweb", 
        "type": "/comic_books/comic_book_character", 
        "id": "/topic/en/nico_minoru"
  });

  my $id = $jsonlp_fetch('->{id}', $json);

  my new_json;

  $new_json = jsonlp_replace('->{cover_appearances}->[2]->{name}', $json, 'Mystic Arcana IV: Sister Grimm');

  $new_json = jsonlp_insert('->{created_by}', $json, 'Adrian Alphona');

  my $second_json = qq({
	  "query":{
		  "country":null,
		  "name":99507,
		  "type":["/location/postal_code"]
	  }
  });

  $new_json = jsonlp_quote('->{query}->{name}', $second_json, '"');

  $new_json = jsonlp_unquote('->{query}->{type}', $second_json);

ABSTRACT

WWW::Metaweb::JSONLikePerl allows manipulation of a JSON string, referencing items like a perl structure, but without actually converting the string.

EXPORTABLE FUNCTIONS

$value = jsonlp_fetch($structure_path, $json_string, [include_quotes])

Returns the value of the item in $json_string pointed to by $structure_path.

If include_quotes is true then whatever may be quoting the value being fetched will also be included, this may be '{ }' for a hash, '[ ]' for an array, '" "' for a string or make no difference if it's a number or bare word.

$new_json = jsonlp_replace($structure_path, $json_string, $replacement_value)

Replaces the specified JSON node with $replacement_value.

$new_json = jsonlp_insert($structure_path, $json_string, $text_to_insert)

Inserts $text_to_insert into the specified JSON node.

$new_json = jsonlp_quote($structure_path, $json_string, $quote_characters)

Quotes the specified node as specified by $quote_characters.

If $quote_characters has a length of 1 (such as '"') the specified node will be surrounded by that character (eg. "994002"). If it has a length of 2 (such as '{}') the first character will go before the specified node, the second character will go acter the specified node (eg. {994002}). Any other number o characters and undef will be returned.

$new_json = jsonlp_unquote($structure_path, $json_string)

Removes quotes from the specified node.

BUGS AND TODO

None of either as of yet.

ACCKNOWLEDGEMENTS

Mainly the Barcelona weather for keeping me up late enough to come up with this crazy idea.

SEE ALSO

JSON, WWW::Metaweb

AUTHORS

Hayden Stainsby <hds@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2007 by Hayden Stainsby

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