in reply to Perl structure to Javacript-ready JSON

(update: misunderstood question)

googling CPAN JSON spits out

These modules have already been discussed in the past, plz look these discussions up and formulate new deeper questions if necessary.

Cheers Rolf

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

  • Comment on Re: Perl structure to Javacript-ready JSON

Replies are listed 'Best First'.
Re^2: Perl structure to Javacript-ready JSON
by Eily (Monsignor) on Nov 25, 2014 at 15:46 UTC

    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?

      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.