Создать пользовательский JSON из таблицы реляционной базы данных - PullRequest
1 голос
/ 21 июня 2020

У меня есть таблица, в которой несколько столбцов. Я хочу построить JSON из этих данных. Вот структура таблицы.

JSON_KEY                COLUMNNAME

Acreage12               accreage
Farmer_projected        sellingprice
Projected_Expense       attr1
Pattern1                crop

введите описание изображения здесь

ОЖИДАЕМЫЕ JSON: -

{
  "Agriculture_Expenses": [
    {
      "Acreage12": "4.0",
      "Farmer_projected": "40000.00",
      "Projected_Expense": "76230.00",
      "Pattern1": "Khariff"
    },
    {
      "Acreage12": "4.0",
      "Farmer_projected": "40000.00",
      "Projected_Expense": "50820.00",
      "Pattern1": "Rabi"
    },
    {
      "Acreage12": "4.0",
      "Farmer_projected": "40000.00",
      "Projected_Expense": "63000.00",
      "Pattern1": "Zaid"
    }
  ]
}

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Вы можете использовать JSON_OBJECT() последовательно вместе с функцией JSON_ARRAYAGG(), встроенной на втором этапе для версии БД 12.2+:

SELECT JSON_OBJECT( 'Agriculture_Expenses' value
                    JSON_ARRAYAGG(JSON_OBJECT ('Acreage12'         value accreage,
                                               'Farmer_projected'  value sellingprice,
                                               'Projected_Expense' value attr1,
                                               'Pattern1'          value crop
                                               )
                                  )
                    ) AS "Result JSON"
  FROM t

Демо

0 голосов
/ 21 июня 2020

Если у вас 12 c и выше, используйте оператор JSON_OBJECT. Например:

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> with emp (empno, ename, job, sal) as
  2    (select 1, 'Little', 'Salesman', 1250 from dual union all
  3     select 2, 'Foot'  , 'Clerk'   ,  980 from dual union all
  4     select 3, 'Scott' , 'Manager' , 1580 from dual
  5    )
  6  select json_object ('id'       value empno,
  7                      'name'     value ename,
  8                      'position' value job,
  9                      'salary'   value sal
 10                     ) json
 11  from emp;

JSON
--------------------------------------------------------------------------------
{"id":1,"name":"Little","position":"Salesman","salary":1250}
{"id":2,"name":"Foot","position":"Clerk","salary":980}
{"id":3,"name":"Scott","position":"Manager","salary":1580}

SQL>

Если вы используете более раннюю версию базы данных, вам придется сделать это вручную .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...