{"kind": "type", "slug": "jsonb", "name": "jsonb", "major": "18", "snapshot": {"casts": [{"castfunc": "0", "castmethod": "i", "castsource": "json", "casttarget": "jsonb", "castcontext": "a"}, {"castfunc": "0", "castmethod": "i", "castsource": "jsonb", "casttarget": "json", "castcontext": "a"}, {"castfunc": "bool(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "bool", "castcontext": "e"}, {"castfunc": "numeric(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "numeric", "castcontext": "e"}, {"castfunc": "int2(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "int2", "castcontext": "e"}, {"castfunc": "int4(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "int4", "castcontext": "e"}, {"castfunc": "int8(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "int8", "castcontext": "e"}, {"castfunc": "float4(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "float4", "castcontext": "e"}, {"castfunc": "float8(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "float8", "castcontext": "e"}], "facts": [{"label": "目录名称", "value": "pg_catalog.jsonb"}, {"label": "类型 OID", "value": "3802"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "扩展"}, {"label": "输入函数", "value": "jsonb_in"}, {"label": "输出函数", "value": "jsonb_out"}], "ranges": [], "tables": [], "aliases": [], "catalog": {"oid": "3802", "descr": "Binary JSON", "typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "jsonb", "typsend": "jsonb_send", "typtype": "b", "typalign": "i", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "jsonb_in", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "jsonb_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "jsonb_recv", "typstorage": "x", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "jsonb_subscript_handler", "typdefaultbin": "_null_", "array_type_oid": "3807", "typispreferred": "f", "array_type_name": "_jsonb"}, "related": [{"url": "/wiki/catalog/pg_type/?v=18", "label": "pg_type 系统目录"}, {"url": "/wiki/catalog/pg_cast/?v=18", "label": "pg_cast 系统目录"}, {"url": "/wiki/catalog/pg_operator/?v=18", "label": "pg_operator 系统目录"}, {"url": "/wiki/catalog/pg_opclass/?v=18", "label": "pg_opclass 系统目录"}, {"url": "/wiki/type/arrays/?v=18", "label": "数组"}, {"url": "/wiki/indexam/btree/?v=18", "label": "btree 索引访问方法"}, {"url": "/wiki/indexam/gin/?v=18", "label": "gin 索引访问方法"}, {"url": "/wiki/indexam/hash/?v=18", "label": "hash 索引访问方法"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_files": {"doc/src/sgml/datatype.sgml": "86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700", "src/include/catalog/pg_am.h": "3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e", "src/include/catalog/pg_am.dat": "b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969", "src/include/catalog/pg_cast.h": "de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053", "src/include/catalog/pg_proc.h": "f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5", "src/include/catalog/pg_type.h": "8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e", "src/include/catalog/pg_range.h": "45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4", "src/include/catalog/pg_cast.dat": "97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2", "src/include/catalog/pg_proc.dat": "1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a", "src/include/catalog/pg_type.dat": "5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9", "src/include/catalog/pg_opclass.h": "9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf", "src/include/catalog/pg_range.dat": "5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4", "src/include/catalog/pg_operator.h": "621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4", "src/include/catalog/pg_opfamily.h": "e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0", "src/include/catalog/pg_opclass.dat": "4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668", "src/include/catalog/pg_operator.dat": "5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703", "src/include/catalog/pg_opfamily.dat": "3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311"}, "manual_sha256": {"arrays.html": "0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df", "domains.html": "82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2", "datatype.html": "e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254", "rowtypes.html": "74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9", "rangetypes.html": "e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33", "datatype-bit.html": "c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37", "datatype-oid.html": "8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38", "datatype-xml.html": "061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822", "datatype-enum.html": "cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8", "datatype-json.html": "650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5", "datatype-uuid.html": "292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246", "datatype-money.html": "8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964", "functions-info.html": "78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87", "catalog-pg-type.html": "ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4", "datatype-binary.html": "0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904", "datatype-pg-lsn.html": "339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af", "datatype-pseudo.html": "c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4", "datatype-boolean.html": "b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956", "datatype-numeric.html": "b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500", "sql-createdomain.html": "e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b", "datatype-datetime.html": "e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699", "datatype-character.html": "c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73", "datatype-geometric.html": "0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9", "datatype-net-types.html": "96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f", "datatype-textsearch.html": "4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c"}, "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/datatype-json.html", "path": "datatype-json.html", "label": "PostgreSQL 18 English manual", "sha256": "650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "zh_from": {"kind": "same-version-chinese-manual-with-preserved-translation-of-reverified-type-description", "manual": {"url": "/zh/docs/18/datatype-json.html", "anchor": "", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "datatype-json.html", "extraction": "concept-introduction", "source_hash": "5ef307aec902559a227386ffbc6b169a78821d30873400a540913e5542faec53", "fragment_sha256": "84514eaf4e26bf2f7fbc99eedd4701e90038dbbd61684876a41a56ca74d1ac24", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "dec70263f5c514d37be7a3ad4ee9d3657d2f165cf2fabceb1b1dcd2f465aecf4", "runtime_rerun": false, "summary_translation": {"key": "jsonb", "kind": "preserved-translation-of-reverified-type-description", "table": "data_type", "version": "18", "source_database": "pgweb", "english_description_sha256": "d73bde18bd841cf022dff46dae37acd12496ea808156d517300e169ac968af18", "localized_description_sha256": "bafe48fddd35918bd0de1d06e4e05a933ca86d0710aebbd07736d1683141d8ef", "original_localization_sources": [{"url": "/docs/18/datatype-json.html", "method": "same-major semantic node", "sha256": "b9e8f98a0b5f2a4ec7b5197d02ab40c0ac0635a678c32728aaadd43cb4cd3766", "language": "zh", "matched_nodes": ["#DATATYPE-JSON/div[0]", "#DATATYPE-JSON/div[11]/h3[0]", "#DATATYPE-JSON/div[11]/p[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[0]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[1]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[2]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[3]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[2]", "#DATATYPE-JSON/div[14]/p[0]", "#DATATYPE-JSON/div[16]/p[2]", "#DATATYPE-JSON/div[16]/p[4]", "#DATATYPE-JSON/div[16]/p[6]", "#DATATYPE-JSON/div[16]/p[8]", "#DATATYPE-JSON/div[16]/p[9]", "#DATATYPE-JSON/div[17]/p[1]", "#DATATYPE-JSON/div[17]/p[2]", "#DATATYPE-JSON/div[18]/div[11]/h3[0]", "#DATATYPE-JSON/div[18]/div[11]/p[1]", "#DATATYPE-JSON/div[18]/div[11]/p[3]", "#DATATYPE-JSON/div[18]/div[11]/p[5]", "#DATATYPE-JSON/div[18]/div[11]/p[6]", "#DATATYPE-JSON/div[18]/p[10]", "#DATATYPE-JSON/div[18]/p[12]", "#DATATYPE-JSON/div[18]/p[3]", "#DATATYPE-JSON/div[18]/p[5]", "#DATATYPE-JSON/div[18]/p[6]", "#DATATYPE-JSON/div[18]/p[8]", "#DATATYPE-JSON/div[19]/p[11]", "#DATATYPE-JSON/div[19]/p[13]", "#DATATYPE-JSON/div[19]/p[15]", "#DATATYPE-JSON/div[19]/p[16]", "#DATATYPE-JSON/div[19]/p[18]", "#DATATYPE-JSON/div[19]/p[19]", "#DATATYPE-JSON/div[19]/p[23]", "#DATATYPE-JSON/div[19]/p[24]", "#DATATYPE-JSON/div[19]/p[25]", "#DATATYPE-JSON/div[19]/p[26]", "#DATATYPE-JSON/div[19]/p[28]", "#DATATYPE-JSON/div[19]/p[2]", "#DATATYPE-JSON/div[19]/p[30]", "#DATATYPE-JSON/div[19]/p[32]", "#DATATYPE-JSON/div[19]/p[34]", "#DATATYPE-JSON/div[19]/p[3]", "#DATATYPE-JSON/div[19]/p[5]", "#DATATYPE-JSON/div[19]/p[7]", "#DATATYPE-JSON/div[1]/dl[0]/dt[0]", "#DATATYPE-JSON/div[1]/dl[0]/dt[1]", "#DATATYPE-JSON/div[1]/dl[0]/dt[2]", "#DATATYPE-JSON/div[1]/dl[0]/dt[3]", "#DATATYPE-JSON/div[1]/dl[0]/dt[4]", "#DATATYPE-JSON/div[1]/dl[0]/dt[5]", "#DATATYPE-JSON/div[1]/dl[0]/dt[6]", "#DATATYPE-JSON/div[20]/p[3]", "#DATATYPE-JSON/div[20]/p[5]", "#DATATYPE-JSON/div[20]/p[7]", "#DATATYPE-JSON/div[20]/p[9]", "#DATATYPE-JSON/div[21]/p[1]", "#DATATYPE-JSON/div[21]/p[2]", "#DATATYPE-JSON/div[21]/p[3]", "#DATATYPE-JSON/div[21]/p[4]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/p[0]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[4]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[5]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-JSON/div[22]/div[12]/p[0]", "#DATATYPE-JSON/div[22]/div[4]/ul[0]/li[0]", "#DATATYPE-JSON/div[22]/div[4]/ul[0]/li[1]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[0]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[1]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[2]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[3]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[4]", "#DATATYPE-JSON/div[22]/p[2]", "#DATATYPE-JSON/div[22]/p[3]", "#DATATYPE-JSON/div[22]/p[5]", "#DATATYPE-JSON/div[22]/p[6]", "#DATATYPE-JSON/div[22]/p[7]", "#DATATYPE-JSON/div[22]/p[9]", "#DATATYPE-JSON/div[23]", "#DATATYPE-JSON/p[10]", "#DATATYPE-JSON/p[13]", "#DATATYPE-JSON/p[4]", "#DATATYPE-JSON/p[5]", "#DATATYPE-JSON/p[6]", "#DATATYPE-JSON/p[7]", "#DATATYPE-JSON/p[8]", "#DATATYPE-JSON/p[9]"]}, {"url": "/docs/18/functions-matching.html", "method": "same-major semantic node", "sha256": "704120d783880b39b956c073d1a82ba1f40b35068b4d3b9a195f543b86c3a22a", "language": "zh", "matched_nodes": ["#FUNCTIONS-MATCHING/div[9]/div[51]/p[2]/em[2]"]}, {"url": "/docs/18/protocol-overview.html", "method": "same-major semantic node", "sha256": "3f1aa8bd4dbef58e9a82e8cf4c82829a4df7416cfa83dd61c18e9e25060f22da", "language": "zh", "matched_nodes": ["#PROTOCOL-OVERVIEW/div[9]/p[1]/span[2]/span[0]"]}]}, "authored_translation": "preserved-translation-of-reverified-type-description", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "coverage": "source inventory; exact declared input types for operator classes", "facts_zh": [{"label": "目录名称", "value": "pg_catalog.jsonb"}, {"label": "类型 OID", "value": "3802"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "扩展"}, {"label": "输入函数", "value": "jsonb_in"}, {"label": "输出函数", "value": "jsonb_out"}], "sections": [], "center_zh": {"title": "jsonb", "locale": "zh-Hans", "source": {"key": "jsonb", "locale": "zh-Hans", "version": "18", "text_hash": "773fd3a48e0958fe8cbdbc4c2d8b0c565c60d2235a6568ebd1a43f3f5ab54a22", "collection": "type", "dataset_hash": "7c31b524dfe136022d39a6ae8dcfac6b3bbd5f8fdaf422536599981252aff0c9", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "payload": {"facts": [{"label": "目录名称", "value": "pg_catalog.jsonb"}, {"label": "类型 OID", "value": "3802"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "扩展"}, {"label": "输入函数", "value": "jsonb_in"}, {"label": "输出函数", "value": "jsonb_out"}], "tables": [], "zh_from": {"kind": "same-version-chinese-manual-with-preserved-translation-of-reverified-type-description", "manual": {"url": "/zh/docs/18/datatype-json.html", "anchor": "", "locale": "zh-Hans", "version": "18", "build_id": 107, "page_key": "datatype-json.html", "extraction": "concept-introduction", "source_hash": "5ef307aec902559a227386ffbc6b169a78821d30873400a540913e5542faec53", "fragment_sha256": "84514eaf4e26bf2f7fbc99eedd4701e90038dbbd61684876a41a56ca74d1ac24", "source_revision": "unknown:rendered-translation-baseline", "translation_revision": "git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b", "translated_from_revision": null}, "body_sha256": "dec70263f5c514d37be7a3ad4ee9d3657d2f165cf2fabceb1b1dcd2f465aecf4", "runtime_rerun": false, "summary_translation": {"key": "jsonb", "kind": "preserved-translation-of-reverified-type-description", "table": "data_type", "version": "18", "source_database": "pgweb", "english_description_sha256": "d73bde18bd841cf022dff46dae37acd12496ea808156d517300e169ac968af18", "localized_description_sha256": "bafe48fddd35918bd0de1d06e4e05a933ca86d0710aebbd07736d1683141d8ef", "original_localization_sources": [{"url": "/docs/18/datatype-json.html", "method": "same-major semantic node", "sha256": "b9e8f98a0b5f2a4ec7b5197d02ab40c0ac0635a678c32728aaadd43cb4cd3766", "language": "zh", "matched_nodes": ["#DATATYPE-JSON/div[0]", "#DATATYPE-JSON/div[11]/h3[0]", "#DATATYPE-JSON/div[11]/p[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[0]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[1]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[2]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[3]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[2]", "#DATATYPE-JSON/div[14]/p[0]", "#DATATYPE-JSON/div[16]/p[2]", "#DATATYPE-JSON/div[16]/p[4]", "#DATATYPE-JSON/div[16]/p[6]", "#DATATYPE-JSON/div[16]/p[8]", "#DATATYPE-JSON/div[16]/p[9]", "#DATATYPE-JSON/div[17]/p[1]", "#DATATYPE-JSON/div[17]/p[2]", "#DATATYPE-JSON/div[18]/div[11]/h3[0]", "#DATATYPE-JSON/div[18]/div[11]/p[1]", "#DATATYPE-JSON/div[18]/div[11]/p[3]", "#DATATYPE-JSON/div[18]/div[11]/p[5]", "#DATATYPE-JSON/div[18]/div[11]/p[6]", "#DATATYPE-JSON/div[18]/p[10]", "#DATATYPE-JSON/div[18]/p[12]", "#DATATYPE-JSON/div[18]/p[3]", "#DATATYPE-JSON/div[18]/p[5]", "#DATATYPE-JSON/div[18]/p[6]", "#DATATYPE-JSON/div[18]/p[8]", "#DATATYPE-JSON/div[19]/p[11]", "#DATATYPE-JSON/div[19]/p[13]", "#DATATYPE-JSON/div[19]/p[15]", "#DATATYPE-JSON/div[19]/p[16]", "#DATATYPE-JSON/div[19]/p[18]", "#DATATYPE-JSON/div[19]/p[19]", "#DATATYPE-JSON/div[19]/p[23]", "#DATATYPE-JSON/div[19]/p[24]", "#DATATYPE-JSON/div[19]/p[25]", "#DATATYPE-JSON/div[19]/p[26]", "#DATATYPE-JSON/div[19]/p[28]", "#DATATYPE-JSON/div[19]/p[2]", "#DATATYPE-JSON/div[19]/p[30]", "#DATATYPE-JSON/div[19]/p[32]", "#DATATYPE-JSON/div[19]/p[34]", "#DATATYPE-JSON/div[19]/p[3]", "#DATATYPE-JSON/div[19]/p[5]", "#DATATYPE-JSON/div[19]/p[7]", "#DATATYPE-JSON/div[1]/dl[0]/dt[0]", "#DATATYPE-JSON/div[1]/dl[0]/dt[1]", "#DATATYPE-JSON/div[1]/dl[0]/dt[2]", "#DATATYPE-JSON/div[1]/dl[0]/dt[3]", "#DATATYPE-JSON/div[1]/dl[0]/dt[4]", "#DATATYPE-JSON/div[1]/dl[0]/dt[5]", "#DATATYPE-JSON/div[1]/dl[0]/dt[6]", "#DATATYPE-JSON/div[20]/p[3]", "#DATATYPE-JSON/div[20]/p[5]", "#DATATYPE-JSON/div[20]/p[7]", "#DATATYPE-JSON/div[20]/p[9]", "#DATATYPE-JSON/div[21]/p[1]", "#DATATYPE-JSON/div[21]/p[2]", "#DATATYPE-JSON/div[21]/p[3]", "#DATATYPE-JSON/div[21]/p[4]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/p[0]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[4]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[5]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-JSON/div[22]/div[12]/p[0]", "#DATATYPE-JSON/div[22]/div[4]/ul[0]/li[0]", "#DATATYPE-JSON/div[22]/div[4]/ul[0]/li[1]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[0]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[1]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[2]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[3]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[4]", "#DATATYPE-JSON/div[22]/p[2]", "#DATATYPE-JSON/div[22]/p[3]", "#DATATYPE-JSON/div[22]/p[5]", "#DATATYPE-JSON/div[22]/p[6]", "#DATATYPE-JSON/div[22]/p[7]", "#DATATYPE-JSON/div[22]/p[9]", "#DATATYPE-JSON/div[23]", "#DATATYPE-JSON/p[10]", "#DATATYPE-JSON/p[13]", "#DATATYPE-JSON/p[4]", "#DATATYPE-JSON/p[5]", "#DATATYPE-JSON/p[6]", "#DATATYPE-JSON/p[7]", "#DATATYPE-JSON/p[8]", "#DATATYPE-JSON/p[9]"]}, {"url": "/docs/18/functions-matching.html", "method": "same-major semantic node", "sha256": "704120d783880b39b956c073d1a82ba1f40b35068b4d3b9a195f543b86c3a22a", "language": "zh", "matched_nodes": ["#FUNCTIONS-MATCHING/div[9]/div[51]/p[2]/em[2]"]}, {"url": "/docs/18/protocol-overview.html", "method": "same-major semantic node", "sha256": "3f1aa8bd4dbef58e9a82e8cf4c82829a4df7416cfa83dd61c18e9e25060f22da", "language": "zh", "matched_nodes": ["#PROTOCOL-OVERVIEW/div[9]/p[1]/span[2]/span[0]"]}]}, "authored_translation": "preserved-translation-of-reverified-type-description", "source_facts_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sections": [], "description_zh": "分解后的二进制 JSON 数据", "description_zh_html": "<p>分解后的二进制 JSON 数据</p><h3>同版本中文手册节选</h3><p>\n  JSON 数据类型用于存储 JSON（JavaScript Object Notation）数据，如\n  <a class=\"ulink\" href=\"https://datatracker.ietf.org/doc/html/rfc7159\">RFC\n  7159</a> 所定义。这类数据也可以存储为 <code class=\"type\">text</code>，但 JSON\n  数据类型的优势在于会强制每个存储值都符合 JSON 规则。此外，对于存储在这些数据类型中的数据，还提供了各种 JSON 专用的函数和操作符；见<a class=\"xref\" href=\"/zh/docs/18/functions-json.html\">第 9.16 节</a>。\n </p><p>\n<span class=\"productname\">PostgreSQL</span> 提供两种用于存储 JSON 数据的类型：<code class=\"type\">json</code> 和 <code class=\"type\">jsonb</code>。为了为这些数据类型实现高效的查询机制，<span class=\"productname\">PostgreSQL</span> 还提供了\n  <code class=\"type\">jsonpath</code> 数据类型，其说明见<a class=\"xref\" href=\"/zh/docs/18/datatype-json.html#DATATYPE-JSONPATH\">第 8.14.7 节</a>。\n </p><p>\n<code class=\"type\">json</code> 和 <code class=\"type\">jsonb</code> 数据类型接收的输入值集合<span class=\"emphasis\"><em>几乎</em></span>完全相同。主要的实际区别在于效率。<code class=\"type\">json</code> 数据类型存储输入文本的精确副本，因此处理函数在每次执行时都必须重新解析；而 <code class=\"type\">jsonb</code> 数据则以分解后的二进制格式存储，由于增加了转换开销，输入时会稍慢一些，但处理起来会显著更快，因为不需要重新解析。<code class=\"type\">jsonb</code> 还支持索引，这可能是一个显著优势。\n </p><p>\n  由于 <code class=\"type\">json</code> 类型存储的是输入文本的精确副本，因此它会保留词元之间在语义上无关紧要的空白，以及 JSON 对象内部键的顺序。此外，如果值中的某个 JSON 对象包含同一个键多次，所有键/值对都会被保留下来（处理函数会将最后一个值视为生效值）。相比之下，<code class=\"type\">jsonb</code> 不保留空白，不保留对象键的顺序，也不保留重复的对象键。如果输入中指定了重复的键，则只保留最后一个值。\n </p><p><a href=\"/zh/docs/18/datatype-json.html\">查看完整中文手册与上下文</a>。</p>"}, "summary": "分解后的二进制 JSON 数据", "version": "18", "link_map": {"/zh/docs/18/datatype-json.html": "/docs/18/datatype-json.html", "/zh/docs/18/functions-json.html": "/docs/18/functions-json.html", "/zh/docs/18/datatype-json.html#DATATYPE-JSONPATH": "/docs/18/datatype-json.html#DATATYPE-JSONPATH"}, "body_html": "<p>分解后的二进制 JSON 数据</p><h3>同版本中文手册节选</h3><p>\n  JSON 数据类型用于存储 JSON（JavaScript Object Notation）数据，如\n  <a href=\"https://datatracker.ietf.org/doc/html/rfc7159\" rel=\"nofollow\">RFC\n  7159</a> 所定义。这类数据也可以存储为 <code>text</code>，但 JSON\n  数据类型的优势在于会强制每个存储值都符合 JSON 规则。此外，对于存储在这些数据类型中的数据，还提供了各种 JSON 专用的函数和操作符；见<a href=\"/zh/docs/18/functions-json.html\" rel=\"nofollow\">第 9.16 节</a>。\n </p><p>\n<span>PostgreSQL</span> 提供两种用于存储 JSON 数据的类型：<code>json</code> 和 <code>jsonb</code>。为了为这些数据类型实现高效的查询机制，<span>PostgreSQL</span> 还提供了\n  <code>jsonpath</code> 数据类型，其说明见<a href=\"/zh/docs/18/datatype-json.html#DATATYPE-JSONPATH\" rel=\"nofollow\">第 8.14.7 节</a>。\n </p><p>\n<code>json</code> 和 <code>jsonb</code> 数据类型接收的输入值集合<span><em>几乎</em></span>完全相同。主要的实际区别在于效率。<code>json</code> 数据类型存储输入文本的精确副本，因此处理函数在每次执行时都必须重新解析；而 <code>jsonb</code> 数据则以分解后的二进制格式存储，由于增加了转换开销，输入时会稍慢一些，但处理起来会显著更快，因为不需要重新解析。<code>jsonb</code> 还支持索引，这可能是一个显著优势。\n </p><p>\n  由于 <code>json</code> 类型存储的是输入文本的精确副本，因此它会保留词元之间在语义上无关紧要的空白，以及 JSON 对象内部键的顺序。此外，如果值中的某个 JSON 对象包含同一个键多次，所有键/值对都会被保留下来（处理函数会将最后一个值视为生效值）。相比之下，<code>jsonb</code> 不保留空白，不保留对象键的顺序，也不保留重复的对象键。如果输入中指定了重复的键，则只保留最后一个值。\n </p><p><a href=\"/zh/docs/18/datatype-json.html\" rel=\"nofollow\">查看完整中文手册与上下文</a>。</p>", "body_sha256": "eb8786e8c4ba123cb6ea961bb629b13ad9577dc8b7bfd99eaf95aac64314dafc", "content_hash": "773fd3a48e0958fe8cbdbc4c2d8b0c565c60d2235a6568ebd1a43f3f5ab54a22", "source_database": "center", "source_revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "operators": [{"oid": "3211", "descr": "get jsonb object field", "oprcom": "0", "oprcode": "jsonb_object_field", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3477", "descr": "get jsonb object field as text", "oprcom": "0", "oprcode": "jsonb_object_field_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->>", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3212", "descr": "get jsonb array element", "oprcom": "0", "oprcode": "jsonb_array_element", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "int4", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3481", "descr": "get jsonb array element as text", "oprcom": "0", "oprcode": "jsonb_array_element_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->>", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "int4", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3213", "descr": "get value from jsonb with path elements", "oprcom": "0", "oprcode": "jsonb_extract_path", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "#>", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "_text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3206", "descr": "get value from jsonb as text with path elements", "oprcom": "0", "oprcode": "jsonb_extract_path_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "#>>", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "_text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3240", "descr": "equal", "oprcom": "=(jsonb,jsonb)", "oprcode": "jsonb_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "=", "oprrest": "eqsel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": "<>(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t", "oprnamespace": "pg_catalog"}, {"oid": "3241", "descr": "not equal", "oprcom": "<>(jsonb,jsonb)", "oprcode": "jsonb_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<>", "oprrest": "neqsel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": "=(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3242", "descr": "less than", "oprcom": ">(jsonb,jsonb)", "oprcode": "jsonb_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<", "oprrest": "scalarltsel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": ">=(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3243", "descr": "greater than", "oprcom": "<(jsonb,jsonb)", "oprcode": "jsonb_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": ">", "oprrest": "scalargtsel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": "<=(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3244", "descr": "less than or equal", "oprcom": ">=(jsonb,jsonb)", "oprcode": "jsonb_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<=", "oprrest": "scalarlesel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": ">(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3245", "descr": "greater than or equal", "oprcom": "<=(jsonb,jsonb)", "oprcode": "jsonb_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": ">=", "oprrest": "scalargesel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": "<(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3246", "descr": "contains", "oprcom": "<@(jsonb,jsonb)", "oprcode": "jsonb_contains", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "@>", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3247", "descr": "key exists", "oprcom": "0", "oprcode": "jsonb_exists", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3248", "descr": "any key exists", "oprcom": "0", "oprcode": "jsonb_exists_any", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?|", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "_text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3249", "descr": "all keys exist", "oprcom": "0", "oprcode": "jsonb_exists_all", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?&", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "_text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3250", "descr": "is contained by", "oprcom": "@>(jsonb,jsonb)", "oprcode": "jsonb_contained", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<@", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3284", "descr": "concatenate", "oprcom": "0", "oprcode": "jsonb_concat", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "||", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "jsonb", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3285", "descr": "delete object field", "oprcom": "0", "oprcode": "jsonb_delete(jsonb,text)", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3398", "descr": "delete object fields", "oprcom": "0", "oprcode": "jsonb_delete(jsonb,_text)", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "_text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3286", "descr": "delete array element", "oprcom": "0", "oprcode": "jsonb_delete(jsonb,int4)", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "int4", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3287", "descr": "delete path", "oprcom": "0", "oprcode": "jsonb_delete_path", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "#-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "_text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "4012", "descr": "jsonpath exists", "oprcom": "0", "oprcode": "jsonb_path_exists_opr(jsonb,jsonpath)", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "@?", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "jsonpath", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "4013", "descr": "jsonpath match", "oprcom": "0", "oprcode": "jsonb_path_match_opr(jsonb,jsonpath)", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "@@", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "jsonpath", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}], "signature": "jsonb", "tables_zh": [], "description": ["分解后的二进制 JSON 数据"], "manual_html": "", "manual_path": "datatype-json.html", "sections_zh": [], "localization": {"status": "complete", "sources": [{"url": "/docs/18/datatype-json.html", "method": "same-major semantic node", "sha256": "b9e8f98a0b5f2a4ec7b5197d02ab40c0ac0635a678c32728aaadd43cb4cd3766", "language": "zh", "matched_nodes": ["#DATATYPE-JSON/div[0]", "#DATATYPE-JSON/div[11]/h3[0]", "#DATATYPE-JSON/div[11]/p[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[0]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[1]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[2]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/tbody[2]/tr[3]/td[2]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[1]", "#DATATYPE-JSON/div[14]/div[1]/table[0]/thead[1]/tr[0]/th[2]", "#DATATYPE-JSON/div[14]/p[0]", "#DATATYPE-JSON/div[16]/p[2]", "#DATATYPE-JSON/div[16]/p[4]", "#DATATYPE-JSON/div[16]/p[6]", "#DATATYPE-JSON/div[16]/p[8]", "#DATATYPE-JSON/div[16]/p[9]", "#DATATYPE-JSON/div[17]/p[1]", "#DATATYPE-JSON/div[17]/p[2]", "#DATATYPE-JSON/div[18]/div[11]/h3[0]", "#DATATYPE-JSON/div[18]/div[11]/p[1]", "#DATATYPE-JSON/div[18]/div[11]/p[3]", "#DATATYPE-JSON/div[18]/div[11]/p[5]", "#DATATYPE-JSON/div[18]/div[11]/p[6]", "#DATATYPE-JSON/div[18]/p[10]", "#DATATYPE-JSON/div[18]/p[12]", "#DATATYPE-JSON/div[18]/p[3]", "#DATATYPE-JSON/div[18]/p[5]", "#DATATYPE-JSON/div[18]/p[6]", "#DATATYPE-JSON/div[18]/p[8]", "#DATATYPE-JSON/div[19]/p[11]", "#DATATYPE-JSON/div[19]/p[13]", "#DATATYPE-JSON/div[19]/p[15]", "#DATATYPE-JSON/div[19]/p[16]", "#DATATYPE-JSON/div[19]/p[18]", "#DATATYPE-JSON/div[19]/p[19]", "#DATATYPE-JSON/div[19]/p[23]", "#DATATYPE-JSON/div[19]/p[24]", "#DATATYPE-JSON/div[19]/p[25]", "#DATATYPE-JSON/div[19]/p[26]", "#DATATYPE-JSON/div[19]/p[28]", "#DATATYPE-JSON/div[19]/p[2]", "#DATATYPE-JSON/div[19]/p[30]", "#DATATYPE-JSON/div[19]/p[32]", "#DATATYPE-JSON/div[19]/p[34]", "#DATATYPE-JSON/div[19]/p[3]", "#DATATYPE-JSON/div[19]/p[5]", "#DATATYPE-JSON/div[19]/p[7]", "#DATATYPE-JSON/div[1]/dl[0]/dt[0]", "#DATATYPE-JSON/div[1]/dl[0]/dt[1]", "#DATATYPE-JSON/div[1]/dl[0]/dt[2]", "#DATATYPE-JSON/div[1]/dl[0]/dt[3]", "#DATATYPE-JSON/div[1]/dl[0]/dt[4]", "#DATATYPE-JSON/div[1]/dl[0]/dt[5]", "#DATATYPE-JSON/div[1]/dl[0]/dt[6]", "#DATATYPE-JSON/div[20]/p[3]", "#DATATYPE-JSON/div[20]/p[5]", "#DATATYPE-JSON/div[20]/p[7]", "#DATATYPE-JSON/div[20]/p[9]", "#DATATYPE-JSON/div[21]/p[1]", "#DATATYPE-JSON/div[21]/p[2]", "#DATATYPE-JSON/div[21]/p[3]", "#DATATYPE-JSON/div[21]/p[4]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-JSON/div[22]/div[10]/p[0]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[4]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/tbody[2]/tr[5]/td[1]", "#DATATYPE-JSON/div[22]/div[12]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-JSON/div[22]/div[12]/p[0]", "#DATATYPE-JSON/div[22]/div[4]/ul[0]/li[0]", "#DATATYPE-JSON/div[22]/div[4]/ul[0]/li[1]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[0]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[1]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[2]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[3]", "#DATATYPE-JSON/div[22]/div[8]/ul[0]/li[4]", "#DATATYPE-JSON/div[22]/p[2]", "#DATATYPE-JSON/div[22]/p[3]", "#DATATYPE-JSON/div[22]/p[5]", "#DATATYPE-JSON/div[22]/p[6]", "#DATATYPE-JSON/div[22]/p[7]", "#DATATYPE-JSON/div[22]/p[9]", "#DATATYPE-JSON/div[23]", "#DATATYPE-JSON/p[10]", "#DATATYPE-JSON/p[13]", "#DATATYPE-JSON/p[4]", "#DATATYPE-JSON/p[5]", "#DATATYPE-JSON/p[6]", "#DATATYPE-JSON/p[7]", "#DATATYPE-JSON/p[8]", "#DATATYPE-JSON/p[9]"]}, {"url": "/docs/18/functions-matching.html", "method": "same-major semantic node", "sha256": "704120d783880b39b956c073d1a82ba1f40b35068b4d3b9a195f543b86c3a22a", "language": "zh", "matched_nodes": ["#FUNCTIONS-MATCHING/div[9]/div[51]/p[2]/em[2]"]}, {"url": "/docs/18/protocol-overview.html", "method": "same-major semantic node", "sha256": "3f1aa8bd4dbef58e9a82e8cf4c82829a4df7416cfa83dd61c18e9e25060f22da", "language": "zh", "matched_nodes": ["#PROTOCOL-OVERVIEW/div[9]/p[1]/span[2]/span[0]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "binary JSON data, decomposed", "/versions/18/facts/0/label": "Catalog name", "/versions/18/facts/1/label": "Type OID", "/versions/18/facts/2/label": "Type kind", "/versions/18/facts/2/value": "Base type", "/versions/18/facts/3/label": "Declared length", "/versions/18/facts/3/value": "Variable length (varlena)", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/4/value": "extended", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/versions/18/related/0/label": "pg_type catalog", "/versions/18/related/1/label": "pg_cast catalog", "/versions/18/related/2/label": "pg_operator catalog", "/versions/18/related/3/label": "pg_opclass catalog", "/versions/18/related/4/label": "Arrays", "/versions/18/related/5/label": "btree index access method", "/versions/18/related/6/label": "gin index access method", "/versions/18/related/7/label": "hash index access method"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "93bedd741890048a1fd1fb4c701ff76514539c31b2d6f906720efa8391ffe42e", "canonical_center_text_hash": "773fd3a48e0958fe8cbdbc4c2d8b0c565c60d2235a6568ebd1a43f3f5ab54a22"}, "description_zh": "分解后的二进制 JSON 数据", "comparison_data": {"casts": [{"castfunc": "0", "castmethod": "i", "castsource": "json", "casttarget": "jsonb", "castcontext": "a"}, {"castfunc": "0", "castmethod": "i", "castsource": "jsonb", "casttarget": "json", "castcontext": "a"}, {"castfunc": "bool(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "bool", "castcontext": "e"}, {"castfunc": "float4(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "float4", "castcontext": "e"}, {"castfunc": "float8(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "float8", "castcontext": "e"}, {"castfunc": "int2(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "int2", "castcontext": "e"}, {"castfunc": "int4(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "int4", "castcontext": "e"}, {"castfunc": "int8(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "int8", "castcontext": "e"}, {"castfunc": "numeric(jsonb)", "castmethod": "f", "castsource": "jsonb", "casttarget": "numeric", "castcontext": "e"}], "facts": [{"label": "Catalog name", "value": "pg_catalog.jsonb"}, {"label": "Declared length", "value": "Variable length (varlena)"}, {"label": "Input function", "value": "jsonb_in"}, {"label": "Output function", "value": "jsonb_out"}, {"label": "Storage strategy", "value": "extended"}, {"label": "Type OID", "value": "3802"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "jsonb", "typsend": "jsonb_send", "typtype": "b", "typalign": "i", "typarray": "_jsonb", "typbyval": "f", "typdelim": ",", "typinput": "jsonb_in", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "jsonb_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "jsonb_recv", "typstorage": "x", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typsubscript": "jsonb_subscript_handler", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_jsonb"}, "operators": [{"oprcom": "0", "oprcode": "jsonb_array_element", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->", "oprrest": "-", "oprright": "int4", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_array_element_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->>", "oprrest": "-", "oprright": "int4", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_concat", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "||", "oprrest": "-", "oprright": "jsonb", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@>(jsonb,jsonb)", "oprcode": "jsonb_contained", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<@", "oprrest": "matchingsel", "oprright": "jsonb", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<@(jsonb,jsonb)", "oprcode": "jsonb_contains", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "@>", "oprrest": "matchingsel", "oprright": "jsonb", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_delete", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprright": "_text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_delete", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprright": "int4", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_delete", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_delete_path", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "#-", "oprrest": "-", "oprright": "_text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_exists", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?", "oprrest": "matchingsel", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_exists_all", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?&", "oprrest": "matchingsel", "oprright": "_text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_exists_any", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?|", "oprrest": "matchingsel", "oprright": "_text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_extract_path", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "#>", "oprrest": "-", "oprright": "_text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_extract_path_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "#>>", "oprrest": "-", "oprright": "_text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<=(jsonb,jsonb)", "oprcode": "jsonb_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": ">=", "oprrest": "scalargesel", "oprright": "jsonb", "oprnegate": "<(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<(jsonb,jsonb)", "oprcode": "jsonb_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": ">", "oprrest": "scalargtsel", "oprright": "jsonb", "oprnegate": "<=(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">=(jsonb,jsonb)", "oprcode": "jsonb_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<=", "oprrest": "scalarlesel", "oprright": "jsonb", "oprnegate": ">(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">(jsonb,jsonb)", "oprcode": "jsonb_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<", "oprrest": "scalarltsel", "oprright": "jsonb", "oprnegate": ">=(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<>(jsonb,jsonb)", "oprcode": "jsonb_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "<>", "oprrest": "neqsel", "oprright": "jsonb", "oprnegate": "=(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_object_field", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_object_field_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->>", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_path_exists_opr", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "@?", "oprrest": "matchingsel", "oprright": "jsonpath", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_path_match_opr", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "@@", "oprrest": "matchingsel", "oprright": "jsonpath", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "=(jsonb,jsonb)", "oprcode": "jsonb_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "=", "oprrest": "eqsel", "oprright": "jsonb", "oprnegate": "<>(jsonb,jsonb)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t"}], "operator_classes": [{"opcname": "jsonb_path_ops", "opcfamily": "gin/jsonb_path_ops", "opcintype": "jsonb", "opcmethod": "gin", "opcdefault": "f", "opckeytype": "int4"}, {"opcname": "jsonb_ops", "opcfamily": "btree/jsonb_ops", "opcintype": "jsonb", "opcmethod": "btree", "opcdefault": "t", "opckeytype": "0"}, {"opcname": "jsonb_ops", "opcfamily": "gin/jsonb_ops", "opcintype": "jsonb", "opcmethod": "gin", "opcdefault": "t", "opckeytype": "text"}, {"opcname": "jsonb_ops", "opcfamily": "hash/jsonb_ops", "opcintype": "jsonb", "opcmethod": "hash", "opcdefault": "t", "opckeytype": "0"}]}, "comparison_hash": "5167ae3268a9532c6f69788d56bf0bf567718f7a2371fb05cb4129f653c23ff6", "manual_language": "zh", "operator_classes": [{"opcname": "jsonb_ops", "opcowner": "POSTGRES", "opcfamily": "btree/jsonb_ops", "opcintype": "jsonb", "opcmethod": "btree", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "jsonb_ops", "opcowner": "POSTGRES", "opcfamily": "hash/jsonb_ops", "opcintype": "jsonb", "opcmethod": "hash", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "jsonb_ops", "opcowner": "POSTGRES", "opcfamily": "gin/jsonb_ops", "opcintype": "jsonb", "opcmethod": "gin", "opcdefault": "t", "opckeytype": "text", "opcnamespace": "pg_catalog"}, {"opcname": "jsonb_path_ops", "opcowner": "POSTGRES", "opcfamily": "gin/jsonb_path_ops", "opcintype": "jsonb", "opcmethod": "gin", "opcdefault": "f", "opckeytype": "int4", "opcnamespace": "pg_catalog"}], "description_zh_html": "<p>分解后的二进制 JSON 数据</p><h3>同版本中文手册节选</h3><p>\n  JSON 数据类型用于存储 JSON（JavaScript Object Notation）数据，如\n  <a href=\"https://datatracker.ietf.org/doc/html/rfc7159\" rel=\"nofollow\">RFC\n  7159</a> 所定义。这类数据也可以存储为 <code>text</code>，但 JSON\n  数据类型的优势在于会强制每个存储值都符合 JSON 规则。此外，对于存储在这些数据类型中的数据，还提供了各种 JSON 专用的函数和操作符；见<a href=\"/zh/docs/18/functions-json.html\" rel=\"nofollow\">第 9.16 节</a>。\n </p><p>\n<span>PostgreSQL</span> 提供两种用于存储 JSON 数据的类型：<code>json</code> 和 <code>jsonb</code>。为了为这些数据类型实现高效的查询机制，<span>PostgreSQL</span> 还提供了\n  <code>jsonpath</code> 数据类型，其说明见<a href=\"/zh/docs/18/datatype-json.html#DATATYPE-JSONPATH\" rel=\"nofollow\">第 8.14.7 节</a>。\n </p><p>\n<code>json</code> 和 <code>jsonb</code> 数据类型接收的输入值集合<span><em>几乎</em></span>完全相同。主要的实际区别在于效率。<code>json</code> 数据类型存储输入文本的精确副本，因此处理函数在每次执行时都必须重新解析；而 <code>jsonb</code> 数据则以分解后的二进制格式存储，由于增加了转换开销，输入时会稍慢一些，但处理起来会显著更快，因为不需要重新解析。<code>jsonb</code> 还支持索引，这可能是一个显著优势。\n </p><p>\n  由于 <code>json</code> 类型存储的是输入文本的精确副本，因此它会保留词元之间在语义上无关紧要的空白，以及 JSON 对象内部键的顺序。此外，如果值中的某个 JSON 对象包含同一个键多次，所有键/值对都会被保留下来（处理函数会将最后一个值视为生效值）。相比之下，<code>jsonb</code> 不保留空白，不保留对象键的顺序，也不保留重复的对象键。如果输入中指定了重复的键，则只保留最后一个值。\n </p><p><a href=\"/zh/docs/18/datatype-json.html\" rel=\"nofollow\">查看完整中文手册与上下文</a>。</p>", "manual_documentation": "dedicated family chapter", "center_zh_rendered": "<p>分解后的二进制 JSON 数据</p><h3>同版本中文手册节选</h3><p>\n  JSON 数据类型用于存储 JSON（JavaScript Object Notation）数据，如\n  <a href=\"https://datatracker.ietf.org/doc/html/rfc7159\">RFC\n  7159</a> 所定义。这类数据也可以存储为 <code>text</code>，但 JSON\n  数据类型的优势在于会强制每个存储值都符合 JSON 规则。此外，对于存储在这些数据类型中的数据，还提供了各种 JSON 专用的函数和操作符；见<a href=\"/docs/18/functions-json.html\">第 9.16 节</a>。\n </p><p>\n<span>PostgreSQL</span> 提供两种用于存储 JSON 数据的类型：<code>json</code> 和 <code>jsonb</code>。为了为这些数据类型实现高效的查询机制，<span>PostgreSQL</span> 还提供了\n  <code>jsonpath</code> 数据类型，其说明见<a href=\"/docs/18/datatype-json.html#DATATYPE-JSONPATH\">第 8.14.7 节</a>。\n </p><p>\n<code>json</code> 和 <code>jsonb</code> 数据类型接收的输入值集合<span><em>几乎</em></span>完全相同。主要的实际区别在于效率。<code>json</code> 数据类型存储输入文本的精确副本，因此处理函数在每次执行时都必须重新解析；而 <code>jsonb</code> 数据则以分解后的二进制格式存储，由于增加了转换开销，输入时会稍慢一些，但处理起来会显著更快，因为不需要重新解析。<code>jsonb</code> 还支持索引，这可能是一个显著优势。\n </p><p>\n  由于 <code>json</code> 类型存储的是输入文本的精确副本，因此它会保留词元之间在语义上无关紧要的空白，以及 JSON 对象内部键的顺序。此外，如果值中的某个 JSON 对象包含同一个键多次，所有键/值对都会被保留下来（处理函数会将最后一个值视为生效值）。相比之下，<code>jsonb</code> 不保留空白，不保留对象键的顺序，也不保留重复的对象键。如果输入中指定了重复的键，则只保留最后一个值。\n </p><p><a href=\"/docs/18/datatype-json.html\">查看完整中文手册与上下文</a>。</p>"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": false}}