Re: [Q] storing JSON, problem with 'escapes'
От | Andrew McMillan |
---|---|
Тема | Re: [Q] storing JSON, problem with 'escapes' |
Дата | |
Msg-id | 1227263326.16206.10.camel@happy.mcmillan.net.nz обсуждение исходный текст |
Ответ на | [Q] storing JSON, problem with 'escapes' ("V S P" <toreason@fastmail.fm>) |
Ответы |
Re: [Q] storing JSON, problem with 'escapes'
|
Список | pgsql-php |
On Fri, 2008-11-21 at 01:54 -0500, V S P wrote: > Hi, > I am using PHP's json_encode function on > an array of strings > that gives me back a JSON encoded string. > > Some of the elements in the string arrays have > double quotes. So PHP's json_encode correctly > escapes them (according to JSON specifications) > with \. > > For example here is a an array element > > "if( js_iop_lt(a,b) ){ VLADIKVLADIKVLADIKVLADIK("b2122") ;}" > > would get encoded in JSON as > > "if( js_iop_lt(a,b) ){ VLADIKVLADIKVLADIKVLADIK(\"b2122\") ;}" > > And that's correct. > Now, the problem is that with PDO (or may be postgresql itself) > I get > > > "if( js_iop_lt(a,b) ){ VLADIKVLADIKVLADIKVLADIK(\\"b2122\\") ;}" > > > and I get then the POSTGRESQL warning > > WARNING: nonstandard use of \\ in a string literal at character 240 > HINT: Use the escape string syntax for backslashes, e.g., E'\\'. When you construct your SQL, if you are going to construct it as a string, like: INSERT INTO blah ( json_column ) VALUES ( 'VLADIKVLADIKVLADIKVLADIK(\\"b2122\\")' ) You need to instead insert as: INSERT INTO blah ( json_column ) VALUES ( E'VLADIKVLADIKVLADIKVLADIK(\\"b2122\\")' ) The "E" in front of the string is a special PostgreSQL thing which explains that the string is encoded with \ escaping. See: http://www.postgresql.org/docs/8.3/interactive/sql-syntax-lexical.html particularly the box labelled 'caution' and the paragraph above it. Regards, Andrew McMillan. ------------------------------------------------------------------------ andrew (AT) morphoss (DOT) com +64(272)DEBIAN You have a truly strong individuality. ------------------------------------------------------------------------
В списке pgsql-php по дате отправления: