not sure why this is an issue now (different perl/json:xs verions?), but
authorerickson <erickson@9efc2488-bf62-4759-914b-345cdb29e865>
Tue, 17 Feb 2009 17:47:18 +0000 (17:47 +0000)
committererickson <erickson@9efc2488-bf62-4759-914b-345cdb29e865>
Tue, 17 Feb 2009 17:47:18 +0000 (17:47 +0000)
$obj->{$k} = JSONObject2Perl($bool)
results in 'Modification of a read-only value attempted', while
$obj->{$k} = $bool
does not, even though the JSON::XS::Boolean object is not altered by JSONObject2Perl().
just missing something?
patched

git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1664 9efc2488-bf62-4759-914b-345cdb29e865

src/perl/lib/OpenSRF/Utils/JSON.pm

index bfefb86..7b962e1 100644 (file)
@@ -79,7 +79,10 @@ sub JSONObject2Perl {
                        }
                        return undef;
                }
-               $obj->{$_} = $class->JSONObject2Perl($obj->{$_}) for (keys %$obj);
+        for my $k (keys %$obj) {
+            $obj->{$k} = (ref($obj->{$k}) eq 'JSON::XS::Boolean') ? 
+                $obj->{$k} : $class->JSONObject2Perl($obj->{$k});
+        }
        } elsif( $ref eq 'ARRAY' ) {
                $obj->[$_] = $class->JSONObject2Perl($obj->[$_]) for(0..scalar(@$obj) - 1);
        }