2016-08-29 6 views
0

우리는 개체 목록을 처리하는 Dataweave를 사용하여 변환을합니다. 우리는 JSON 응답 그런 식으로 얻을 :Dataweave에서 하나의 결과 만있는 경우 배열 대신 이름없는 개체를 얻는 방법

{"name": "Hotel Stockholm", 
"propertyCode": "12346", 
"currency": "SEK"} 

우리는이 같은 응답을 생성하는 :

{"hotels": [{ 
    "name": "Hotel Oslo", 
    "propertyCode": "12345", 
    "currency": "NOK" 
}, 
{ 
    "name": "Hotel Stockholm", 
    "propertyCode": "12346", 
    "currency": "SEK" 
}]} 

단, (1) 응답의 경우, 우리는 다음과 같은 응답을 갖고 싶어

{ 
hotels: payload.rows map ((row , indexOfRow) -> { 
    name: row.content.companyName.content, 
    propertyCode: row.content.propertyCode.content, 
    currency: row.content.currencyCode.content 
})} 

결과가 1 인 경우 배열을 얻지 못하게하려면 어떤 조건으로 입력해야합니까?

답변

0

이 시도 :

%dw 1.0 
%output application/json 
%function makeHotel(row) { 
    name: row.name, 
    propertyCode: row.propertyCode, 
    currency: row.currency 
} 
--- 
{ 
    hotels: payload.rows map ((row , indexOfRow) -> makeHotel(row)) 
} when ((sizeOf payload.rows) != 1) 
otherwise makeHotel(payload.rows[0]) 

그것은 당신에게 하늘의 입력에 하늘의 배열, 하나 개의 입력에 대한 간단한 객체와 하나 개 이상의 입력 행이 배열 구조를 제공 할 것입니다.

(테스트 목적으로 입력 구조가 약간 다르지만 일반적인 해결 방법은 분명해야합니다.)

+0

답장을 보내 주셔서 감사합니다. 모든 속성을 반복 할 필요가 없도록 한 번 쓰는 방법이 있다고 생각합니까? 그저 내가보고 싶지 않은 첫 번째 라인 일 뿐이며 컬렉션이 아닙니다. –