همراهان گرامی وقت شمابخیرباشه، بااموزش json در Perl در خدمت شماهستم.

این مبحث نحوه ی decode/encode اشیا JSON را با استفاده از زبان برنامه نویسی Perl پوشش می دهد. ابتدا می بایست محیط را برای شروع به برنامه نویسی با Perl راه اندازی کنید.

محیط

پیش از اقدام به encode/decode اشیا JSON با Perl می بایست ماژول JSON را نصب کنید. این ماژول از طریق CPAN قابل دسترسی می باشد. پس از دانلود JSON-2.53.tar.gz یا هر ورژن جدید دیگری، دستورات زیر را اجرا نمایید:

$tar xvfz JSON-2.53.tar.gz

$cd JSON-2.53

$perl Makefile.PL

$make

$make install

توابع JSON

تابع

شرح کاربرد

encode_json

Data structure (آرگومان پاس داده شده) یا ورودی از نوع Perl را به رشته ی باینری کدگذاری شده با کاراکترهای UTF-8 تبدیل می کند.

decode_json

عکس تابع encode-json عمل می کند. در واقع یک رشته ی باینری با کاراکترهای UTF-8 به عنوان ورودی دریافت کرده و سعی می کند آن را به عنوان یک متن JSON با کاراکترهای UTF-8 تفسیر (parse) کند و در نهایت reference حاصل را برگرداند.

to_json

Data structure ورودی (پاس داده شده به عنوان آرگومان) را به رشته از نوع json تبدیل می کند.

from_json

یک رشته از نوع json دریافت کرده و سعی می کند آن را parse کند و در صورت موفقیت reference حاصل را برگرداند.

convert_blessed

این تابع را با مقدار true بکار ببرید تا Perl بتواند با استفاده از متد TO-JSON در کلاس object مورد نظر، یک شی را به JSON تبدیل کند.

تبدیل data structure به رشته ی json (encode-json)

تابع encode-json() زبان Perl ساختمان داده ی ورودی (data structure) را به رشته ی باینری کدگذاری شده با کاراکترهای UTF-8 تبدیل می کند.

ساختارنگارشی (Syntax)

$json_text = encode_json ($perl_scalar );

or

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

مثال

#!/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”;

با اجرای کد فوق، نتیجه ی زیر حاصل می شود:

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

نمونه ی زیر تبدیل اشیا Perl به فرمت 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”;

پس از اجرای کد فوق، خروجی زیر تولید می شود:

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

تبدیل رشته ی JSON به متغیری از نوع Perl (decode_json)

تابع decode_json() یک رشته ی JSON را به عنوان ورودی دریافت کرده و یک متغیر Perl در خروجی برمی گرداند.
ساختارنگارشی (Syntax)

$perl_scalar = decode_json $json_text

or

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

مثال

در مثال زیر یک شی JSON توسط تابع decode_json() به متغیری در زبان Perl تبدیل می شود. برای این منظور لازم است ماژول Data::Dumper را نصب نمایید.

#!/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);

نتیجه ی زیر حاصل می شود:

$VAR1 = {

‘e’ =>5,

‘c’ =>3,

‘a’ =>1,

‘b’ =>2,

‘d’ =>4

};