2017-11-13 3 views
3

패키지 JSON :: XS는 JSON :: XS :: Boolean 객체를 사용하여 true/false를 나타냅니다. true/false json 값을 1/0 Perl 숫자로 디코딩하도록 강제 할 수 있습니까?Perl : JSON :: XS 부울 디코딩을 1/0으로 강제 할 수 있습니까?

#!/usr/bin/env perl 

use JSON::XS; 
use Data::Dumper; 

my $json = decode_json(join('', <DATA>)); 
print Dumper $json; 

__DATA__ 
{ 
    "test_true": true, 
    "test_false": false 
} 

출력 :

$VAR1 = { 
      'test_true' => bless(do{\(my $o = 1)}, 'JSON::XS::Boolean'), 
      'test_false' => bless(do{\(my $o = 0)}, 'JSON::XS::Boolean') 
     }; 

내가 decode_json 후 같은 것을 원하는 :

$VAR1 = { 
      'test_true' => 1, 
      'test_false' => 0 
     }; 

이유 : 경우에 따라서는 예측하기 어려운 방법 JSON :: XS :: 부울 것 예를 들어, SOAP 직렬 자 또는 다른 직렬화 자로 직렬화 할 수 있습니다.

PerlMonks discussion.

+3

왜 그렇게하고 싶습니까? 이러한 객체는 Perl에서 true 및 false로 올바르게 평가됩니다. – Borodin

+1

'Dumper'를 사용하고 있습니다.'$ json-> test_true'와'$ json-> test_false' 만 출력 해 보셨습니까? 그것들은'$ json -> {test_true}'와'$ json -> {test_false}'가 될'1''과'0' – ChatterOne

+1

@ChatterOne로 올바르게 문자열 화됩니다. '$ json'은 단지 해쉬 일뿐입니다. 여러분은 그것에 대한 메소드를 호출 할 수 없습니다. – simbabque

답변

3

아니요. 값은 축복받은 개체입니다. JSON :: XS :: Boolean에서 허용되는 값만 가질 수 있습니다.

관련 문제