in reply to Re^2: JSON to HASH
in thread JSON to HASH

If you do:

my $h = from_json( to_json( { a => 1, b => 2, c => [ 1..10 ], d => { ' +a'..'z' } } ) );;

Then to reference key 'a' you need $h->{a};

You can (at a small performance penalty) avoid that by doing:

my %h = %{ from_json( to_json( { a => 1, b => 2, c => [ 1..10 ], d => +{ 'a'..'z' } } ) ) };; print $h{a};; 1

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^4: JSON to HASH
by PriNet (Monk) on May 15, 2016 at 06:49 UTC
    Let me play with that, I'll have to figure out how to read the string from the json file properly i imagine... i'm currently using:
    sub ServerData { $GSD_JSON = do { open (JSONDATA, "<:encoding(UTF-8)", "/HTTPS/prinet\.org/\.dat +a\.settings"); local $/; <JSONDATA> }; close (JSONDATA); $GSD_Handle = JSON->new; return ($GSD_Handle->decode($GSD_JSON)); }
    which gives me a one-liner $json_string (that i was trying to make a %hash with $key{$value} with. thanx, let me fiddle with your suggestion

    I tried re-inventing the wheel again, but everytime I push it, it still falls flat on it's side...
Re^4: JSON to HASH
by PriNet (Monk) on May 15, 2016 at 22:34 UTC
    Thanx so much BrowserUk, I was able to implement what you suggested into my subroutine to get what I was after...
    From:
    sub ServerData { //(package Get; $GSD_JSON = do { open (JSONDATA, "<:encoding(UTF-8)", "/HTTPS/prinet\.org/\.mai +n\.data"); local $/; <JSONDATA> }; close (JSONDATA); $GSD_Handle = JSON->new; return ($GSD_Handle->decode($GSD_JSON)); }
    To:
    sub ServerData { //(package Get; $GSD_JSON = do { open (JSONDATA, "<:encoding(UTF-8)", "/HTTPS/prinet\.org/\.mai +n\.data"); local $/; <JSONDATA> }; close (JSONDATA); $GSD_Handle = JSON->new; return (%{$GSD_Handle->decode($GSD_JSON)}); }
    Now all I have to do is figure out how to read the hash in the next routine that updates the json file... *hah*
    sub ServerData { //package Update; %USD_In = %_; use JSON; open (BUFFER, ">/HTTPS/prinet\.org/\.main\.data"); print BUFFER encode_json(%USD_In); close (BUFFER); }
    Which btw does not work...
    Thanx again...

    I tried re-inventing the wheel again, but everytime I push it, it still falls flat on it's side...
      %USD_In = %_;

      Unless you're doing something very strange globally,  %_ will always be empty. Maybe try
          %USD_In = @_;


      Give a man a fish:  <%-{-{-{-<

        *hah*... go figure, that was I accidentally tried and it did work ! thanx for reading up on my little adventure here Anomalous... I got to do some re-writing (again), but I'm hoping I'm good for a little longer now. Thanx to the whole lot of ya...

        I tried re-inventing the wheel again, but everytime I push it, it still falls flat on it's side...