json - 从 json 转换为 int 不工作?

标签 json postgresql casting int

<分区>

我需要以某种方式从 json 转换为 int。我做了这个功能:

CREATE OR REPLACE FUNCTION json2int(p_json json)
  RETURNS integer AS
$BODY$DECLARE
  v_json json;
  --v_char character varying;
  v_int integer;
BEGIN
  SELECT p_json->'additionalData'->'id' INTO v_json;
  --SELECT CAST(v_json as character varying) INTO v_char;
  SELECT CAST(v_json as integer) INTO v_int;
  RETURN v_int;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION json2int(json)
  OWNER TO postgres;

我尝试从 json 转换为 int,但没有用。然后我尝试从 json 转换为 character varying to int,这也没有用。所以我补充说:

CREATE CAST (json AS integer) WITH INOUT as implicit;

现在当我运行函数时:

SELECT json2int('{"additionalData":{"id":"4","userType":"viewer"},"type":"wall"}');

我收到这个错误:

ERROR:  invalid input syntax for integer: ""4""
CONTEXT:  SQL statement "SELECT CAST(v_json as integer)"
PL/pgSQL function json2int(json) line 8 at SQL statement

有人可以帮忙吗?

最佳答案

正如评论中所提示的那样,使用 ->> 将文本转换为 int:

SELECT (p_json -> 'additionalData' ->> 'id')::int INTO v_int;

关于json - 从 json 转换为 int 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25809744/

相关文章:

java - 在通用类中转换

javascript - 单击按钮附加 JSON 值

json - Node.js Express REST API - 使用 GET 请求访问 JSON url 参数

json - 如何在 flutter 中对 json 进行字符串化

使用 AWS 驱动程序与 Redshift 的 R 连接不起作用,但可以与 Postgres 驱动程序一起使用

sql - 如果索引用于查询,PostgreSQL 将不会使用索引进行投影

c# - 复杂的json反序列化

java - 具有相似模式的 Spring 多数据源

c - 这个指针转换是否违反了严格的别名规则?

c - (size_t)((char *)0) 的计算结果是否为 0?