从JSON数组中提取键/值对

时间:2016-09-27 08:59:29

标签: sql json postgresql

我在postgres数据库中有这个JSON(B)列。我在本专栏中列出了从API获得的所有数据。现在我需要从这个数组中提取一些键/值对。对于JSON数组,如:

[{"myKey1": "school type", "myKey2": "primary"}, {"myKey1": "study coverage", "myKey2": "secondary"}]

我需要提取:

myKey1: school type   myKey2: primary

myKey1: study coverage  myKey22: secondary

由于我是JSON的新手,对我来说,似乎我首先需要将数组分解为对象(用大括号括起来),而且还有一些postgres函数用于对象(在以下链接中给出https://www.postgresql.org/docs/9.4/static/functions-json.html )我可以用来提取所需的键/值对。

我的数据库表是:

CREATE TABLE "Education" (
    "id" SERIAL NOT NULL,
    "json_text" JSONB NOT NULL,
);

我使用以下查询来实现此目的:

SELECT tmp_col->>'myKey1'
FROM ( 
  SELECT json_text->> 0 AS temp_col
  FROM education
) AS temp_table

运行此查询时出现以下错误。

Error Message

缺少什么的线索?

还有更好的方法来获取有需要的信息。我正在使用Java语言来显示信息。

感谢。

1 个答案:

答案 0 :(得分:2)

如果可以,请尝试在java中处理JSON。您可以从postgres查询完整的JSON,然后使用JSON API for Java,然后可以解析您的JSON。