همراهان گرامی وقت شمابخیرباشه، بااموزش 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
};