json 函数介绍

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 这篇博客主要介绍的是 json, json_build_array, json_build_object, json_object, json_to_record, json_to_recordset,

摘要: 这篇博客主要介绍的是 json, json_build_array, json_build_object, json_object, json_to_record,
json_to_recordset,


介绍 json 函数
json_build_array() 和 json_build_object 允许建立任意复杂的 json 树,
json_object() 变成一两个二维数组或两个单独的数组, 输入 json_object 的是 键值对, 类似于 hstore () 函数。
json_object_agg() 将两个json对象变量成为一个单独的json对象,作为名字部分

现在我们来通过具体的查询语句来了解这些 json 函数

json_build_array

json_build_object
json_object
json_to_record
json_to_recordset

现在开始, 我们一一介绍。

json_build_array

这个函数是根据不同类型的不同值构建json数组。搜易,你可以创建根据 text, number 等构建

select json_build_array('depesz', 123, 3.14, 'postgresql');

      json_build_array          

["depesz", 123, 3.14, "postgresql"]
(1 row)

json_build_object

返回基于参数的对象(散列?) , 假设奇数参数是键, 甚至参数是值, 如下所示:


select json_build_object('pi', 3.14, 'database', 'postgresql');
        json_build_object            

{"pi" : 3.14, "database" : "postgresql"}
(1 row)

json_object

这里有两个函数, 他们具有相同的名字, 但是他们的参数不一样, 所以,我们需要具体的例子来显示。

json_object 只有一个参数的时候, 他的作用类似于 json_build_object()


select json_object ('{pi, 3.14, database, postgresql}' :: text[]);
    json_object                

{"pi" : "3.14", "database" : "postgresql"}
(1 row)

json_object 它具有两个数组, 且数组内的值任意


select json_object('{e, pi, tau}'::text[], '{2.718, 3.141, 6.283}'::text[] );
              json_object                    

{"e" : "2.718", "pi" : "3.141", "tau" : "6.283"}
(1 row)

json_to_record

将给定的json对象转换为自定义(按调用要求)数据类型的记录


select * from json_to_record ('{"pi":"3.14","database":"postgresql"}', true) as j (pi numeric, database text);

上述语句中 json_to_record 的第二个参数是 ‘true’ , 这是为什么呢?
从测试中可以推断, 如果有数组嵌套结构 (即对象中的给定键值不是一个标量,它是一个对象或者数组), 那么
如果我们将第二个参数修改为 'false', 函数将会失败,


ERROR: cannot call json_populate_record on a nest object

通过这种方式可以避免对复杂结构拆包操作。

json_to_recordset

json_to_recordset 的作用和json_to_record作用是一样的, 但是他可以返回多个json对象


select * from json_to_recordset (
'[{"name":"e", "value":2.718}, 
  {"name":"pi", "value":3.141},
  {"name":"tau", "value":6.283}]', true

) as x (name text, value numeric);

">https://www.depesz.com/2014/01/30/waiting-for-9-4-new-json-functions/>

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
存储 JSON 关系型数据库
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是JSON_ARRAYAGG和JSON_OBJECT。本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法。
471 1
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
|
3月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
|
5月前
|
JSON 关系型数据库 数据库
PostgreSQL中json_to_record函数的神秘面纱
`json_to_record`是PostgreSQL中的函数,用于将JSON数据转换为RECORD类型,便于查询和分析。基本用法是传入JSON数据,如`SELECT json_to_record('{"name": "张三", "age": 30}'::json);`。还可结合FUNCTION创建自定义函数,实现复杂功能。在实际应用中,它简化了对JSON格式数据的处理,例如筛选年龄大于30的用户。了解并善用此函数能提升数据库操作效率。本文由木头左分享,期待你的点赞和收藏,下次见!
PostgreSQL中json_to_record函数的神秘面纱
|
6月前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,使用JSON解析函数将MySQL表中的字段解析成多个字段将这些字段写入到ODPS(MaxCompute)中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
200 3
|
6月前
|
SQL JSON 监控
实时计算 Flink版产品使用合集之直接将 JSON 字符串解析为数组的内置函数如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11月前
|
JSON 数据格式
在Hologres中,`json_populate_recordset`函数可以将JSON对象转换为多个字段的记录集
在Hologres中,`json_populate_recordset`函数可以将JSON对象转换为多个字段的记录集
145 1
|
JSON 数据格式
非常实用的5种json数组去重方法,函数实现思路竟是chatgpt帮我写的!
你敢信这5种json数组去重方法的实现思路竟然是chatgpt写的,chatgpt对函数的理解也太准确了吧!
221 0
|
JSON 数据格式
Hive----get_json_object() 函数
get_json_object() 函数
3025 0
|
JSON 关系型数据库 MySQL
Mysql中JSON操作函数JSON_EXTRACT()
Mysql中JSON操作函数JSON_EXTRACT()
|
JSON PHP 数据格式
PHP中json传递请求字符串网址函数http_build_query()与parse_str(),将POST参数组转换拼接成GET请求链接
PHP中json传递请求字符串网址函数http_build_query()与parse_str(),将POST参数组转换拼接成GET请求链接
137 0