从关系数据库表构建自定义JSON

时间:2020-06-21 13:59:49

标签: sql json oracle oracle12c

我有一张桌子,桌子上有几列。我想从此数据构建一个JSON。这是表的结构。

JSON_KEY                COLUMNNAME

Acreage12               accreage
Farmer_projected        sellingprice
Projected_Expense       attr1
Pattern1                crop

enter image description here

期望的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 :(得分:0)

如果您使用的是12c及更高版本,请使用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>

如果您使用的数据库版本较低,则必须手动

答案 1 :(得分:0)

对于数据库版本$('.btn-quickview').on('click', function (e) { var ajaxUrl = $(this).attr('href'); if ( $.fn.magnificPopup ) { setTimeout(function () { $.magnificPopup.open({ type: 'ajax', mainClass: "mfp-ajax-product", tLoading: '', preloader: false, removalDelay: 350, items: { src: ajaxUrl }, callbacks: { ajaxContentAdded: function () { owlCarousels($('.quickView-content'), { onTranslate: function(e) { var $this = $(e.target), currentIndex = ($this.data('owl.carousel').current() + e.item.count - Math.ceil(e.item.count / 2)) % e.item.count; $('.quickView-content .carousel-dot').eq(currentIndex).addClass('active').siblings().removeClass('active'); } }); quantityInputs(); }, open: function() { $('body').css('overflow-x', 'visible'); $('.sticky-header.fixed').css('padding-right', '1.7rem'); }, close: function() { $('body').css('overflow-x', 'hidden'); $('.sticky-header.fixed').css('padding-right', '0'); } }, ajax: { tError: '', } }, 0); }, 500); e.preventDefault(); } }); ,您可以将JSON_OBJECT()与嵌入第二步的JSON_ARRAYAGG()函数一起连续使用:

12.2+

Demo