如何解析Postgres中文本列的JSON值

9

我有一个文本类型的列,其中包含json值。

{"summary":"this is a example","url":"stackoverflow.com"}

我该如何使用查询语句从postgres的列中提取'url' json字段?

我尝试了以下查询语句:

 SELECT jvalue->>'url' From table;

使用我的查询时,我得到了以下错误。
SQL错误[42883]:ERROR:运算符不存在:text -> unknown 提示:没有匹配给定名称和参数类型的运算符。您可能需要添加显式类型转换。 org.postgresql.util.PSQLException:ERROR:运算符不存在:text -> unknown提示:没有匹配给定名称和参数类型的运算符。您可能需要添加显式类型转换。
1个回答

21

你可以使用 -> 运算符:

SELECT '{"summary":"this is a example","url":"stackoverflow.com"}'::json->'url';

如果我有一个 JSON 值,例如 {"summary":"this is a example","uri" : [{"url":"stackoverflow.com"}]},如何获取 URL? - mwKART
请注意,其中包含引号,显示为“stackoverflow.com”,而不是stackoverflow.com。 - lgx
1
如果您不想在字符串周围使用双引号,请使用data::json->>'url'。[postgresql.org/docs/current/functions-json.html] (https://www.postgresql.org/docs/current/functions-json.html) - ram
1
如果值是一个JSON字符串:SELECT '"{"summary":"这是一个例子","url":"stackoverflow.com"}"' - Alex
data::json->'url'将以双引号打印。data::json->>'url'将不带任何引号打印。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接