1# copied over from JSON::XS and modified to use JSON::PP 2 3# copied over from JSON::DWIW and modified to use JSON::PP 4 5# Creation date: 2007-02-20 21:54:09 6# Authors: don 7 8use strict; 9use warnings; 10use Test; 11 12# main 13{ 14 BEGIN { plan tests => 7 } 15 16 BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } 17 18use JSON::PP; 19 20 my $json_str = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var3":"val3"}'; 21 22 my $json_obj = JSON::PP->new->allow_nonref(1); 23 my $data = $json_obj->decode($json_str); 24 25 my $pass = 1; 26 if ($data->{var1} eq 'val1' and $data->{var3} eq 'val3') { 27 if ($data->{var2}) { 28 my $array = $data->{var2}; 29 if (ref($array) eq 'ARRAY') { 30 if ($array->[0] eq 'first_element') { 31 my $hash = $array->[1]; 32 if (ref($hash) eq 'HASH') { 33 unless ($hash->{sub_element} eq 'sub_val' 34 and $hash->{sub_element2} eq 'sub_val2') { 35 $pass = 0; 36 } 37 } 38 else { 39 $pass = 0; 40 } 41 } 42 else { 43 $pass = 0; 44 } 45 } 46 else { 47 $pass = 0; 48 } 49 } 50 else { 51 $pass = 0; 52 } 53 } 54 55 ok($pass); 56 57 $json_str = '"val1"'; 58 $data = $json_obj->decode($json_str); 59 ok($data eq 'val1'); 60 61 $json_str = '567'; 62 $data = $json_obj->decode($json_str); 63 ok($data == 567); 64 65 $json_str = "5e1"; 66 $data = $json_obj->decode($json_str); 67 ok($data == 50); 68 69 $json_str = "5e3"; 70 $data = $json_obj->decode($json_str); 71 ok($data == 5000); 72 73 $json_str = "5e+1"; 74 $data = $json_obj->decode($json_str); 75 ok($data == 50); 76 77 $json_str = "5e-1"; 78 $data = $json_obj->decode($json_str); 79 ok($data == 0.5); 80 81 82 83 84# use Data::Dumper; 85# print STDERR Dumper($test_data) . "\n\n"; 86 87} 88 89exit 0; 90 91############################################################################### 92# Subroutines 93 94