in reply to JSON error '"' expected, at character offset 1

That is valid javascript but not valid JSON :) so use some javascript to convert it to JSON :)
alert( JSON.stringify({Id:'343410466704417574',Pseudo:"LRYWLL",Country +:'PERL_REPUBLIC',CountryId:1,Can:'true'}) )

Replies are listed 'Best First'.
Re^2: JSON error '"' expected, at character offset 1
by odrevet (Acolyte) on Jan 02, 2010 at 00:17 UTC
    Thanks but I can't use JS in my program.
    I Easly replaced every single quotes by double quotes with $response =~ s/'/"/g; Now how can I do with a regex :
    Quote every unquoted characteres beetween { or , or :
    and { or , or :
    Can I capture matching string with ( ) and use it in the replace part of the regex with quote around ?
    I tried with
    $response =~s/({|,|:)(.+)(}|,|:)/"$&"/g;

    But it quotes the whole JSON...

      What about

      quote: 'He said: "boo!"'

      Can I capture matching string with ( ) and use it in the replace part of the regex with quote around ?

      $1

      >perl -le"$_='abc'; s/(.)/[$1]/sg; print" [a][b][c]
        ahah you got me on that one.

        I finally succeed:
        use strict; use warnings; use JSON; my $response = '{Id:"343410466704454908",Pseudo:Stan,Country:"PERL_REP +UBLIC",CountryId:1,CanRecieveImg:"true",Localization:"01",Localizatio +nId:859,Picto:"fille.gif",PictoId:0,Type:0,Sex:1,Comment:"biz",Age:22 +,Media:0,IsAd:false}'; $response =~s/([{:,])(\w+)([:,}])/$1"$2"$3/g; $response =~s/([{:,])(\w+)([:,}])/$1"$2"$3/g; print $response;
        output :
        {"Id":"343410466704454908","Pseudo":"Stan","Country":"PERL_REPUBLIC","CountryId":"1", "CanRecieveImg":"true","Localization":"01","LocalizationId":"859","Picto":"fille .gif","PictoId":"0","Type":"0","Sex":"1","Comment":"biz","Age":"22","Media":"0", "IsAd":"false"}
        Still there two things I don't like :

        The regex need to be called twice because unquoted words between : and , (eg Stan or 22) don't match, maybe because the : is alderly used for the rule words between , and :

        $1 replaced all the pattern
        ex : $response =~s/[{:,](\w+)[:,]/"$1"/g;
        "Id""343410466704454908""Pseudo"Stan
        So I used three capturing ( )

        It's quit lame but it works.. If someone have something better...
      Thanks but I can't use JS in my program.

      Maybe you should insist on JSON :D