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