2017-03-16 4 views
-2

안녕하세요, operationsList 배열에서 json 객체를 관계형 필드와 객체로 파싱해야하지만 여기 트릭은 operationsList 배열 아래에 7 개의 객체가 붙여진 샘플입니다. 각 json 객체를 개별적으로 구문 분석 할 수 있지만 각 json 객체를 자동으로 선택할 수있는 함수를 사용해야합니다. 나는 나를 주시기 바랍니다배열에서 Json 객체를 관계형 객체 및 필드로 구문 분석

코드는 아래

{ 
    "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" : [ ] 
    } 
    } ] 
} 

붙여 모든 기능을 사용하여 시간과 시간을 시도 :

나는 참고

포스트 그레스 9.6에 대한 pgadmin의 $에서 실행 답을해야합니다 이것을하고 올바른 생각을 게시 할 수있는 올바른 방법을 알고 있어야합니다.

+0

질문 편집 : 1. 언어에 태그를 답니다. 2. 모든 코드를 선택하고 Ctrl-K를 누릅니다. –

+1

* 관계 필드 및 객체 * 란 무엇을 의미합니까? 이미 스키마가 있습니까? ([''json [b] _populate_recordset()'] (https://www.postgresql.org/docs/current/static/functions-json.html)) - 또는 JSON 입력에 대한 스키마를 만들고 싶습니다. -파리? – pozs

+0

이미 관계형 테이블과 필드에 대한 스키마가 있습니다. 열 이름은 "텍스트" "workCenter" "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 코드를했고 나는 열, workcenter, 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 ',

public.router_data 에서);

쿼리에 표시되는 내용은 {operation, 5} 입니다. 반복 할 때 또는 실행시 모든 작업을 선택하는 데 필요한 것을 제공하고 싶지 않습니다. 쿼리

+0

질문을 자세히 지정하면 질문 자체를 편집하십시오. 답변으로 게시합니다. – pozs

+0

그리고 전체 스키마를 게시하십시오. 우리는 그것 없이는 추측 할 수 있습니다. – pozs