Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^3: Int becomes String when I convert to json

by choroba (Cardinal)
on May 10, 2022 at 07:23 UTC ( [id://11143730]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Int becomes String when I convert to json
in thread Int becomes String when I convert to json

> that a single digit it normally returns an int, but for a double digit a string.

It's more complex than that. It depends on what you did with the value, on the version of Perl, what JSON module you use and its version, and sometimes even more. See my slides on the topic.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^4: Int becomes String when I convert to json
by bartender1382 (Beadle) on May 10, 2022 at 16:23 UTC

    You really do attack the problem. But since I didn't explicitly see it, and am a bad reader, I just want to be sure that implementing...

    use Cpanel::JSON::XS::Type; sub makeJSON { (my $hashref) = @_; my $json = encode_json($hashref, {returnvalue => JSON_TYPE_INT, username => JSON_TYPE_STRING, userid => JSON_TYPE_STRING, status => JSON_TYPE_STRING, filename => JSON_TYPE_STRING, rawfilename => JSON_TYPE_STRING, ticket => JSON_TYPE_STRING, message => JSON_TYPE_STRING}); return $json; }

    ...covers my bases.

    Although am still a little offset that sometimes it turned it into a string, and sometimes not. But I'll get over it.

    Again, thanks for making slides to let people know.

      You also need to
      use Cpanel::JSON::XS;
      Its encode_json takes the extra parameter, the ::Type module just exports the types' names.

      BTW,

      (my $hashref) = @_;
      is usually written
      my ($hashref) = @_;
      so you can easily add more parameters if needed without having to move the parenthesis around.

      map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

        Yes,

        use Cpanel::JSON::XS;

        was already in there. Just bad cut & pasting. As for:

        (my $hashref) = @_;

        was a typo that seems to work, although I will fix that now. Just to ask tho, is there a reason I shouldn't syntax for single variables?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11143730]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2024-04-23 11:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found