【问题标题】:How to store and print array value from json object in postgresql?如何在postgresql中存储和打印来自json对象的数组值?
【发布时间】:2021-01-29 18:51:02
【问题描述】:

这里我只需要提取技能并存储在“skill_s”变量中以进行进一步处理。 我怎样才能做到这一点?

DO
$do$
DECLARE
    skill_s  Text[];
    jsonObject json = // Json object 
                '{
                    "Name": "bala Kala",     
                    "Education": "B.Tech", 
                    "Skills":  ["enim", "aliquip", "qui"]
                }';
BEGIN 
    SELECT jsonObject::TEXT[]->'Skills' into skill_s; 
    raise info 'JSON value Name is %', skill_s;
END
$do$

我想打印输出 enim, aliquip, qui

【问题讨论】:

  • 不要标记3个完全不同的RDBMS...只标记你真正使用的RDBMS。我已经删除了所有冲突的标签。请正确地重新标记您的问题。
  • 你真的在使用 Postgres 9.1 和 9.3 吗?两者都不再维护或支持,9.1 甚至没有 JSON 数据类型。
  • 据我了解您的问题,归结为“如何将 JSON 数组转换为本机文本数组”?参见例如here 寻求解决方案
  • 我在这里尝试了很多东西“SELECT json_array_elements_text(jsonObject->'Skills') into Skill_s;” ,但没有运气。 @a_horse_with_no_name。我从早上开始就在挣扎。
  • 你看过我链接的问题了吗?它有几种将 json(b) 数组转换为文本数组的解决方案。如果您告诉我们,为什么要转换它,也许我们还可以为您提供不需要转换开始的替代解决方案。但如果没有更多背景,这很难说

标签: json django postgresql postgresql-9.1 postgresql-9.3


【解决方案1】:

这是将 json 数组转换为字符串数组的简单解决方案。我们可以使用 json_array_elements_text 和 json_array_elements 来实现它。这里 json_array_elements 返回双引号中的字符串,例如“Python”,而 json_array_elements_text 返回纯字符串。下面是我的代码。 This 帮助了我。

DO
$do$
DECLARE
    skill_s  Text[];
    jsonObject json = // Json object 
                '{
                    "Name": "bala Kala",     
                    "Education": "B.Tech", 
                    "Skills":  ["enim", "aliquip", "qui"]
                }';
BEGIN
skill_s := array(SELECT json_array_elements_text(jsonObject->'Skills'));
    raise info 'JSON value Name is %',skill_s;
END
$do$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2015-09-08
    • 2014-03-31
    相关资源
    最近更新 更多