2017-03-16 59 views
-2

嗨我需要解析操作數組下的json對象到關係字段和對象中,但這裏的技巧是我粘貼的示例有七個對象在operationsList數組下,我的代碼能要分別解析每個json對象,但是需要使用能夠自動選擇每個json對象的函數。解析數組中的Json對象到關係對象和字段中

我需要的答案在pgAdmin的$執行Postgres的9.6

注:我使用所有的功能

下面的代碼

{ 
    "header" : { 
    "tasklistid" : "RC016753", 
    "planningPlant" : "ECL", 
    "status" : "Z03", 
    "title" : "725307-STG 1 LPT NZZ", 
    "parentRouterId" : "", 
    "enginecode" : "5B", 
    "structureNode" : "5B_72530015200", 
    "routerType" : "INR", 
    "disassemblyLocation" : "TL725300", 
    "latestReleaseDate" : "31.12.8888", 
    "planningReference" : "INR-725300" 
    }, 
    "operationsList" : [ { 
    "order" : "0010", 
    "text" : "232-003-IN PROCESS - FPI", 
    "workCenter" : "248", 
    "controlKey" : "ZQP3", 
    "details" : { 
     "longText" : "232-003-IN PROCESS - FPI FPI : Floroscent penetration Inspection This is Long text to test the API", 
     "MICS" : [ { 
     "order" : "0010", 
     "MICNumber" : "C0000100", 
     "Plant" : "ECL", 
     "version" : "000003" 
     }, { 
     "order" : "0020", 
     "MICNumber" : "C0175399", 
     "Plant" : "ECL", 
     "version" : "000001" 
     }, { 
     "order" : "0030", 
     "MICNumber" : "C0175400", 
     "Plant" : "ECL", 
     "version" : "000001" 
     } ], 
     "dependencies" : [ ], 
     "documents" : [ { 
     "Number" : "5B/ZSC-ECL-0041176", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0500" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041175", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0510" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041177", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0520" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041178", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0530" 
     } ] 
    } 
    }, { 
    "order" : "0020", 
    "text" : "307-004-BENCHING", 
    "workCenter" : "358", 
    "controlKey" : "SM01", 
    "details" : { 
     "longText" : "", 
     "MICS" : [ ], 
     "dependencies" : [ ], 
     "documents" : [ ] 
    } 
    }, { 
    "order" : "0030", 
    "text" : "110-005-CHEMICAL CLEANING", 
    "workCenter" : "048", 
    "controlKey" : "ZQP1", 
    "details" : { 
     "longText" : "", 
     "MICS" : [ { 
     "order" : "0010", 
     "MICNumber" : "C0006683", 
     "Plant" : "ECL", 
     "version" : "000001" 
     } ], 
     "dependencies" : [ ], 
     "documents" : [ ] 
    } 
    }, { 
    "order" : "0040", 
    "text" : "310-001-TIG WELDING", 
    "workCenter" : "295", 
    "controlKey" : "ZQP1", 
    "details" : { 
     "longText" : "", 
     "MICS" : [ { 
     "order" : "0010", 
     "MICNumber" : "C0020962", 
     "Plant" : "ECL", 
     "version" : "000001" 
     }, { 
     "order" : "0020", 
     "MICNumber" : "C0006552", 
     "Plant" : "ECL", 
     "version" : "000001" 
     }, { 
     "order" : "0030", 
     "MICNumber" : "C0006511", 
     "Plant" : "ECL", 
     "version" : "000001" 
     } ], 
     "dependencies" : [ ], 
     "documents" : [ { 
     "Number" : "5B/ZSC-ECL-0041175", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0500" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041176", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0510" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041177", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0520" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041178", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0530" 
     } ] 
    } 
    }, { 
    "order" : "0050", 
    "text" : "307-005-BENCHING", 
    "workCenter" : "358", 
    "controlKey" : "SM01", 
    "details" : { 
     "longText" : "", 
     "MICS" : [ ], 
     "dependencies" : [ ], 
     "documents" : [ { 
     "Number" : "5B/ZSC-ECL-0041175", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0500" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041176", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0510" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041177", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0520" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041178", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0530" 
     } ] 
    } 
    }, { 
    "order" : "0060", 
    "text" : "220-001-IN PROCESS DIMENSIONAL INSP", 
    "workCenter" : "358", 
    "controlKey" : "ZQP1", 
    "details" : { 
     "longText" : "", 
     "MICS" : [ { 
     "order" : "0010", 
     "MICNumber" : "C0027739", 
     "Plant" : "ECL", 
     "version" : "000001" 
     } ], 
     "dependencies" : [ ], 
     "documents" : [ { 
     "Number" : "5B/ZSC-ECL-0041175", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0500" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041176", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0510" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041177", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0520" 
     }, { 
     "Number" : "5B/ZSC-ECL-0041178", 
     "Type" : "ZSC", 
     "version" : "00", 
     "order" : "0530" 
     } ] 
    } 
    }, { 
    "order" : "0070", 
    "text" : "110-006-CHEMICAL CLEANING", 
    "workCenter" : "048", 
    "controlKey" : "ZQP1", 
    "details" : { 
     "longText" : "", 
     "MICS" : [ { 
     "order" : "0010", 
     "MICNumber" : "C0006683", 
     "Plant" : "ECL", 
     "version" : "000001" 
     } ], 
     "dependencies" : [ ], 
     "documents" : [ ] 
    } 
    } ] 
} 

粘貼請讓我嘗試了幾個小時知道這樣做的正確方法,並隨時發佈您的想法。

+0

編輯您的問題:1.標記一種語言2.選擇所有代碼並點擊Ctrl-K。 –

+1

你的意思是什麼*關係字段和對象*?你已經有一個模式? (['json [b] _populate_recordset()'](https://www.postgresql.org/docs/current/static/functions-json.html)) - 或者你想爲你的JSON輸入創建一個模式-THE飛? (似乎很冒險) – pozs

+0

我已經有關係表和字段的架構列名稱是「文本」 「工作中心」 「controlKey」 「細節」我需要做的就是解析json對象的列值數組插入到這些表列中。 –

回答

0
ArrayList<operationsList> objOperationsList=new ArrayList<>(); 

class operationsList 

{ 

String order; 

String text; 

String workCenter; 

String controlKey; 

Details objDetails; 

} 

class Details 

{ 

    String longText; 

ArrayList<MICS> objMICS=new ArrayList<>(); 

    ArrayList<Dependencies> objDependencies=new ArrayList<>(); 

    ArrayList<Documents> objDocuments=new ArrayList<>(); 

} 

class MICS {} 

class Dependencies {} 

class Documents {} 
+0

這是不正確的答案我認爲在數據庫中執行pl/pgsql –

0

的JSON列,而不是JSONB我曾在JSON列這整個JSON代碼(上面粘貼),我有其中列順序,工作中心,CONTROLKEY,表中的文本,所以我需要選擇手術檯上從JSON對象的值,並將這些值代入列,以便我能夠做到這一點使用此查詢

INSERT INTO public.operation(
order_1, text, workcenter_number, control_key, long_text) 
    (select 

router_payload :: JSON#>「{operationsList,5}」 - >>「秩序」, router_payload :: json#>'{operationsList,5}' - >>'text',

router_payload :: json#>'{operationsList,5}' - >>'workCenter',

router_payload :: json#>'{operationsList,5}' - >>'controlKey', router_payload#>' {operationsList,5}' - >'details' - >>'longText',

from public.router_data );

但是我的問題如果你在查詢中看到我指定{operation,5} 我不想給我,我試圖使它成爲循環,或者當我執行時需要選擇所有操作查詢

+0

如果您進一步指定您的問題,請編輯問題本身,而不是張貼它作爲答案。 – pozs

+0

然後請發佈您的完整架構。沒有它我們可以猜測。 – pozs