jsonb_plperlu

在 jsonb 和 plperlu 之间转换

概览

扩展包名版本分类许可证语言
plperlu1.0LANGPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
3270plperlupg_catalog
3271bool_plperlu-
3272jsonb_plperlu-
3273hstore_plperlu-
相关扩展plperlu jsquery jsonb_plperl jsonb_plpython3u pg_jsonschema plperl plpgsql

版本

PG18PG17PG16PG15PG14
1.01.01.01.01.0

安装

提示:这是 PostgreSQL 内核自带的 contrib 扩展

CREATE EXTENSION jsonb_plperlu;

用法

jsonb_plperlu: jsonb 与不受信 PL/Perl 之间的类型转换

为不受信 PL/Perl 提供 jsonb 类型的转换支持。加载后,jsonb 值会自动转换为 Perl 数据结构(哈希、数组、标量),反之亦然。

CREATE EXTENSION jsonb_plperlu;

CREATE FUNCTION process_json_u(val jsonb) RETURNS text
LANGUAGE plperlu TRANSFORM FOR TYPE jsonb AS $$
  use JSON;
  # val 已经是 Perl 数据结构,重新编码并排序
  return encode_json($val);
$$;

CREATE FUNCTION build_jsonb_u(name text, age integer) RETURNS jsonb
LANGUAGE plperlu TRANSFORM FOR TYPE jsonb AS $$
  my ($name, $age) = @_;
  return { name => $name, age => $age };
$$;

SELECT process_json_u('{"b": 2, "a": 1}'::jsonb);
SELECT build_jsonb_u('Alice', 30);

最后修改 2026-03-14: update extension metadata (953cbd0)