in reply to Re^2: Can not use JSON module
in thread Can not use JSON module
"...I am searching for function..."
Yes, sure. I got it. Here it is (as i already mentioned):
#!/usr/bin/env perl use strict; use warnings; use Data::Dumper qw(Dumper); my $FROM_JSON = qr{ (?&VALUE) (?{ $_ = $^R->[1] }) (?(DEFINE) (?<OBJECT> (?{ [$^R, {}] }) \{ (?: (?&KV) # [[$^R, {}], $k, $v] (?{ # warn Dumper { obj1 => $^R }; [$^R->[0][0], {$^R->[1] => $^R->[2]}] }) (?: , (?&KV) # [[$^R, {...}], $k, $v] (?{ # warn Dumper { obj2 => $^R }; [$^R->[0][0], {%{$^R->[0][1]}, $^R->[1] => $^R->[2]}] }) )* )? \} ) (?<KV> (?&STRING) # [$^R, "string"] : (?&VALUE) # [[$^R, "string"], $value] (?{ # warn Dumper { kv => $^R }; [$^R->[0][0], $^R->[0][1], $^R->[1]] }) ) (?<ARRAY> (?{ [$^R, []] }) \[ (?: (?&VALUE) (?{ [$^R->[0][0], [$^R->[1]]] }) (?: , (?&VALUE) (?{ # warn Dumper { atwo => $^R }; [$^R->[0][0], [@{$^R->[0][1]}, $^R->[1]]] }) )* )? \] ) (?<VALUE> \s* ( (?&STRING) | (?&NUMBER) | (?&OBJECT) | (?&ARRAY) | true (?{ [$^R, 1] }) | false (?{ [$^R, 0] }) | null (?{ [$^R, undef] }) ) \s* ) (?<STRING> ( " (?: [^\\"]+ | \\ ["\\/ʔbfnrt] # | # \\ u [0-9a-fA-f]{4} )* " ) (?{ [$^R, eval $^N] }) ) (?<NUMBER> ( -? (?: 0 | [1-9]\d* ) (?: \. \d+ )? (?: [eE] [-+]? \d+ )? ) (?{ [$^R, eval $^N] }) ) ) }xms; sub from_json { local $_ = shift; local $^R; eval { m{\A$FROM_JSON\z}; } and return $_; die $@ if $@; return 'no match'; } my $json = q({"k1":"v1","k2":"v2"}); print Dumper from_json($json); __END__ karls-mac-mini:Desktop karl$ ./godfather.pl $VAR1 = { 'k2' => 'v2', 'k1' => 'v1' };
Update: Oops!. Better with Data::Dumper
Thank merlyn for the regex.
Regards, Karl
«The Crux of the Biscuit is the Apostrophe»
Furthermore I consider that Donald Trump must be impeached as soon as possible
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Can not use JSON module
by tejD (Novice) on Jun 03, 2017 at 19:54 UTC | |
by karlgoethebier (Abbot) on Jun 04, 2017 at 07:47 UTC | |
by tejD (Novice) on Jun 06, 2017 at 09:51 UTC | |
by hippo (Archbishop) on Jun 06, 2017 at 10:48 UTC | |
by Corion (Patriarch) on Jun 06, 2017 at 10:32 UTC | |
by karlgoethebier (Abbot) on Jun 06, 2017 at 11:36 UTC | |
by tejD (Novice) on Jun 07, 2017 at 11:41 UTC | |
by tejD (Novice) on Jun 05, 2017 at 11:51 UTC | |
by hippo (Archbishop) on Jun 05, 2017 at 12:23 UTC | |
by AnomalousMonk (Archbishop) on Jun 05, 2017 at 20:31 UTC |