Json with Perl

JSON with Perl:

This chapter covers how to encode and decode JSON objects using Perl programming language. Let’s start with preparing the environment to start our programming with Perl for JSON.

–   Environment

Before you start encoding and decoding JSON using Perl, you need to install JSON module, which can be obtained from CPAN. Once you downloaded JSON-2.53.tar.gz or any other latest version, follow the steps mentioned below –

$tar xvfz JSON-2.53.tar.gz

$cd JSON-2.53

$perl Makefile.PL

$make$make install

–   JSON Functions

Function Libraries
encode_json Converts the given Perl data structure to a UTF-8 encoded, binary string.
decode_json Decodes a JSON string.
to_json Converts the given Perl data structure to a json string.
from_json Expects a json string and tries to parse it, returning the resulting reference.
convert_blessed Use this function with true value so that Perl can use TO_JSON method on the object’s class to convert an object into JSON.

Encoding JSON in Perl (encode_json)

Perl encode_json() function converts the given Perl data structure to a UTF-8 encoded, binary string.

–  Syntax

-      $json_text = encode_json ($perl_scalar );

-      

-       or

-      $json_text = JSON->new->utf8->encode($perl_scalar);

Example

The following example shows arrays under JSON with Perl −

-          #!/usr/bin/perl

-          use JSON;

-          my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

-          my $json = encode_json \%rec_hash;

-          print "$json\n";

While executing, this will produce the following result −

{"e":5,"c":3,"a":1,"b":2,"d":4}

The following example shows how Perl objects can be converted into JSON −

#!/usr/bin/perl 

package Emp;

sub new {  

        my $class = shift;  

          my $self = {   

           name => shift, 

          hobbies  => shift,

         birthdate  => shift,

   };           

   bless $self, $class;   

  return $self; 

} 

sub TO_JSON { return { %{ shift() } }; } 

package main;

use JSON;



 my $JSON = JSON->new->utf8;

$JSON->convert_blessed(1);



 $e = new Emp( "sachin", "sports", "8/5/1974 12:20:03 pm");

$json = $JSON->encode($e);

print "$json\n";

On executing, it will produce the following result −

{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}

 Decoding JSON in Perl (decode_json)

Perl decode_json() function is used for decoding JSON in Perl. This function returns the value decoded from json to an appropriate Perl type.

–  Syntax

$perl_scalar = decode_json $json_text

 or 

$perl_scalar = JSON->new->utf8->decode($json_text)

–  Example

The following example shows how Perl can be used to decode JSON objects. Here you will need to install Data::Dumper module if you already do not have it on your machine.

#!/usr/bin/perl

use JSON;

use Data::Dumper; 

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 

$text = decode_json($json);

print  Dumper($text);

On executing, it will produce following result −

$VAR1 = { 

          'e' => 5, 

            'c' => 3,

            'a' => 1, 

           'b' => 2, 

          'd' => 4

};

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s