第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用javascript從oracle獲取數(shù)據(jù)到嵌套的json對(duì)象?

如何使用javascript從oracle獲取數(shù)據(jù)到嵌套的json對(duì)象?

米脂 2023-07-14 09:44:34
我當(dāng)前的json格式是這樣的:{  {    'id' : 61,    'item' : 'apple pie,banana split',    'quantity' : '2,1',    'price' : '100000,50000'   },  {    'id' : 62,    'item' : 'beef steak,salad',    'quantity' : '1,2',    'price' : '50000,100000'  }}我想要的是這樣的:{  {    'id' : 61,    'item' :             {              '1': {'name': 'apple pie', 'quantity' : '2','price': '100000'},              '2': {'name': 'banana split', 'quantity' : '1','price': '50000'}        }  },  {    'id' : 62,    'item' :             {              '1': {'name': 'beef steak', 'quantity' : '1','price': '50000'},              '2': {'name': 'salad', 'quantity' : '2','price': '100000'}        }  }}我的數(shù)據(jù)庫(kù)是這樣的:split_id  item                      quantity  price61        apple pie~|~banana split  2~|~1     100000~|~5000062        beef steak~|~salad        1~|~2     50000~|~100000我使用“~|~”,因?yàn)槿绻沂褂谩埃?,那么它將被識(shí)別為查詢中的下一列值。我不會(huì)創(chuàng)建一個(gè)新行來(lái)避免商品、數(shù)量和價(jià)格的多個(gè)值,因?yàn)樗聿煌慕灰?。我找到了這個(gè)問(wèn)題的答案,但它是在 php 和 mysql 中。我找不到 javascript 和 oracle 的。我很感謝對(duì)這個(gè)問(wèn)題的任何幫助。謝謝。
查看完整描述

2 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

在 Oracle 中,您可以拆分逗號(hào)分隔的字符串,然后聚合為 JSON:


WITH bounds ( id, idx, item, i_start, i_end, quantity, q_start, q_end, price, p_start, p_end ) AS (

? SELECT split_id,

? ? ? ? ?1,

? ? ? ? ?item,

? ? ? ? ?1,

? ? ? ? ?INSTR( item, '~|~', 1 ),

? ? ? ? ?quantity,

? ? ? ? ?1,

? ? ? ? ?INSTR( quantity, '~|~', 1 ),

? ? ? ? ?price,

? ? ? ? ?1,

? ? ? ? ?INSTR( price, '~|~', 1 )

? FROM? ?table_name t

UNION ALL

? SELECT id,

? ? ? ? ?idx + 1,

? ? ? ? ?item,

? ? ? ? ?CASE i_end WHEN 0 THEN 0 ELSE i_end + 3 END,

? ? ? ? ?CASE i_end WHEN 0 THEN 0 ELSE INSTR( item, ',', i_end + 3 ) END,

? ? ? ? ?quantity,

? ? ? ? ?CASE p_end WHEN 0 THEN 0 ELSE q_end + 3 END,

? ? ? ? ?CASE p_end WHEN 0 THEN 0 ELSE INSTR( quantity, ',', q_end + 3 ) END,

? ? ? ? ?price,

? ? ? ? ?CASE q_end WHEN 0 THEN 0 ELSE p_end + 3 END,

? ? ? ? ?CASE q_end WHEN 0 THEN 0 ELSE INSTR( price, ',', p_end + 3 ) END

? FROM? ?bounds

? WHERE? i_end > 0

? OR? ? ?q_end > 0

? OR? ? ?p_end > 0

),

split_data ( items ) AS (

? SELECT JSON_OBJECT(

? ? ? ? ? ?KEY 'id' VALUE id,

? ? ? ? ? ?KEY 'items' VALUE

? ? ? ? ? ? ?JSON_OBJECTAGG(

? ? ? ? ? ? ? ?KEY? ?TO_CHAR( idx )

? ? ? ? ? ? ? ?VALUE JSON_OBJECT(

? ? ? ? ? ? ? ? ? ? ? ?KEY? ?'item'

? ? ? ? ? ? ? ? ? ? ? ?VALUE CASE

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?WHEN i_start > 0 AND i_end = 0

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?THEN SUBSTR( item, i_start )

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELSE SUBSTR( item, i_start, i_end - i_start )

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?END,

? ? ? ? ? ? ? ? ? ? ? ?KEY? ?'quantity'

? ? ? ? ? ? ? ? ? ? ? ?VALUE TO_NUMBER(

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CASE

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?WHEN q_start > 0 AND i_end = 0

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?THEN SUBSTR( quantity, q_start )

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELSE SUBSTR( quantity, q_start, q_end - q_start )

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?END

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?),

? ? ? ? ? ? ? ? ? ? ? ?KEY? ?'price'

? ? ? ? ? ? ? ? ? ? ? ?VALUE TO_NUMBER(

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CASE

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?WHEN p_start > 0 AND p_end = 0

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?THEN SUBSTR( price, p_start )

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELSE SUBSTR( price, p_start, p_end - p_start )

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?END

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)

? ? ? ? ? ? ? ? ? ? )

? ? ? ? ? ? ? ? ? ? RETURNING CLOB

? ? ? ? ? ? ? )

? ? ? ? )

? FROM? ?bounds

? GROUP BY id

)

SELECT JSON_ARRAYAGG(

? ? ? ? ?items FORMAT JSON

? ? ? ? ?RETURNING CLOB

? ? ? ?) AS value

FROM? ?split_data;

其中,對(duì)于樣本數(shù)據(jù):


CREATE TABLE table_name ( split_id, item, quantity, price ) AS

SELECT 61, 'apple pie~|~banana split', '2~|~1', '100000~|~50000' FROM DUAL UNION ALL

SELECT 62, 'beef steak~|~salad',? ? ? ?'1~|~2', '50000~|~100000' FROM DUAL;

輸出:


VALUE

----------------------------------------

[

? {

? ? "id" : 61,

? ? "items" :

? ? {

? ? ? "1" :

? ? ? {

? ? ? ? "item" : "apple pie",

? ? ? ? "quantity" : 2,

? ? ? ? "price" : 100000

? ? ? },

? ? ? "2" :

? ? ? {

? ? ? ? "item" : "banana split",

? ? ? ? "quantity" : 1,

? ? ? ? "price" : 50000

? ? ? }

? ? }

? },

? {

? ? "id" : 62,

? ? "items" :

? ? {

? ? ? "1" :

? ? ? {

? ? ? ? "item" : "beef steak",

? ? ? ? "quantity" : 1,

? ? ? ? "price" : 50000

? ? ? },

? ? ? "2" :

? ? ? {

? ? ? ? "item" : "salad",

? ? ? ? "quantity" : 2,

? ? ? ? "price" : 100000

? ? ? }

? ? }

? }

]

db<>


查看完整回答
反對(duì) 回復(fù) 2023-07-14
?
翻翻過(guò)去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

您當(dāng)前的 JSON 對(duì)象格式錯(cuò)誤。您可以將其設(shè)為數(shù)組,以使其更加簡(jiǎn)單。你可以這樣做:


var data = [ { 'id' : 61, 'item' : 'apple pie,banana split', 'quantity' : '2,1', 'price' : '100000,50000', }, { 'id' : 62, 'item' : 'beef steak,salad', 'quantity' : '1,2', 'price' : '50000,100000', }];


var result = data.map(({id,...rest})=>({id, items:Array.from({length:2},(_,i)=>Object.fromEntries(Object.entries(rest).map(([k,v])=>[k,v.split(',')[i]])))}));


console.log(result);


這里我使用和map的組合來(lái)創(chuàng)建一個(gè)對(duì)象。您可以看到是硬編碼的,但您可以相應(yīng)地更改它。fromEntriesentriesArray.fromlength:2


查看完整回答
反對(duì) 回復(fù) 2023-07-14
  • 2 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)