Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^2: Perl structure to Javacript-ready JSON

by Eily (Monsignor)
on Nov 25, 2014 at 15:46 UTC ( [id://1108357]=note: print w/replies, xml ) Need Help??


in reply to Re: Perl structure to Javacript-ready JSON
in thread Perl structure to Javacript-ready JSON

Well, Jeppe already knew about JSON since he's using it already. And there are other modules that do the same thing (JSON::DWIM will work the same on blessed or not blessed objects for exemple). But as far as I understand the issue here is to escape some chars (the single quote at least apparently) in strings. And unlike Data::Dump, JSON doesn't seem to provide a call back to allow custom output for any data type (objects can have a method to convert themselves to JSON, but here the strings are not blessed).

Jeppe, wouldn't s/'/\\'/g; on the output JSON be enough?

Replies are listed 'Best First'.
Re^3: Perl structure to Javacript-ready JSON
by LanX (Saint) on Nov 25, 2014 at 16:00 UTC
    OK, right, sorry.

    My fault was that I read it as JSON has a bug in escaping quotes!

    ( JS - contrary to Perl - doesn't give single and double quotes different meanings, but that doesn't mean they need to be escaped, so no bug! )

    so whats happening here is that Jeppe wants the data altered, and IMHO this should already be done on Perl's side before escaping.

    Your suggestion of a general s/'/\\'/g would only work if the JSON output doesn't use single quotes as delimiter.¹

    Cheers Rolf

    (addicted to the Perl Programming Language and ☆☆☆☆ :)

    update

    ¹) ah sorry, I didn't know that single quotations are invalid in JSON

    from JSON::PP

    allow_singlequote $json = $json->allow_singlequote([$enable]) If $enable is true (or missing), then "decode" will accept JSON + strings quoted by single quotations that are invalid JSON format.

      And it would work if ' is the only char that has to be escaped, (I supposed it was to be able to embed the JSON output in other code, delimited by single quotes, but I don't know the full story, that's a bit XYish actually). hippo might have given a better answer than mine.

        my guess is rather a stupid parser on the other side using ["'] synonymously.

        Cheers Rolf

        (addicted to the Perl Programming Language and ☆☆☆☆ :)

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (8)
As of 2024-04-18 10:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found