2013/12/10 Anderson Cristian <[email protected]>
> Estou com um problema sério com JSON no postgresql, quando converto um
> select para JSON por EX: "SELECT to_json(row) FROM tabela row" até ae tudo
> bem, mas quando eu tento buscar um valor dentro do JSON que seja MONEY ele
> retorna o seguinte erro: Token "R" is invalid.
>
> O PostGreSQL cria um JSON da seguinte forma quando o campo é money.
> SELECT '{"salario": R$ 1.000,00}'::json
>
> Alguém já passou por isso? Tem uma solução?
>
>
humm.... Fiz um teste bem simples aqui, e parece que estamos falando de um
bug mesmo:
postgres=# SELECT to_json(a) FROM (VALUES(1000::money)) a(salario);
to_json
-----------------------
{"salario":$1,000.00}
(1 row)
postgres=# SELECT to_json(a)->'salario' FROM (VALUES(1000::money))
a(salario);
ERROR: invalid input syntax for type json
DETAIL: Token "$" is invalid.
CONTEXT: JSON data, line 1: {"salario":$...
Veja que ele gera:
{"salario":$1,000.00}
Mas creio que o correto seria:
{"salario":1000}
ou
{"salario":"$1,000.00"}
Vou fazer uma pesquisa e se encontrar algo posto aqui. Uma solução
temporária é converter de money para numeric:
SELECT to_json(row) FROM (SELECT foo, bar, salario::numeric AS salario FROM
tabela) row
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral