2017-04-19 1 views
0

없이 직렬화 어레이 나는 shipcloud.io에서 다음 JSON 응답을했다 :잭슨 - 속성 이름

[ 
    { 
    "name": "dhl", 
    "display_name": "Deutsche Post DHL", 
    "services": [ 
     "standard", 
     "returns", 
     "one_day", 
     "one_day_early" 
    ], 
    "package_types": [ 
     "parcel", 
     "bulk" 
    ] 
    }, 
    { 
    "name": "dpag", 
    "display_name": "Deutsche Post", 
    "services": [ 
     "standard" 
    ], 
    "package_types": [ 
     "letter", 
     "parcel_letter", 
     "books" 
    ] 
    }, 
    { 
    "name": "dpd", 
    "display_name": "DPD - Dynamic Parcel Distribution", 
    "services": [ 
     "standard", 
     "returns", 
     "one_day", 
     "one_day_early" 
    ], 
    "package_types": [ 
     "parcel", 
     "parcel_letter" 
    ] 
    } 
] 

어떻게 잭슨이 JSON 배열을 직렬화 할 수 있습니까? 일반적으로 간단한 POJO를 사용하고 목록/배열 (@JsonProperty ("blub"))의 속성 이름 예 : 을 정의합니다. 문제는 여기에 사용 된 속성 이름이 없습니다 ... 빈 속성 이름을 사용하여 시도했지만 작동하지 않았습니다. 난 그냥이 오류 메시지를 받고 있어요 : 그래서, 당신은 유형의 여러 오브젝트를 직렬화 복원하는

ObjectMapper mapper = new ObjectMapper(); 
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, false); 

답변

1

당신이 jackson를 사용하려는 경우는, 이것은 나를 위해 작동 솔루션입니다 당신은 당신이 자리에서 인스턴스화 할 수이

// somewhere in an example TypeReferences class 
public static final TypeReference<List<Response.CarriersResponse>> CARRIER_RESPONSES = new TypeReference<List<Response.CarriersResponse>>() { 
}; 

// elsewhere where you're calling the mapper 
List<Response.CarriersResponse> responses = mapper.readValue(text, TypeReferences.CARRIER_RESPONSES); 

처럼리스트로 할 필요가 있지만, 전체 메모리 소비 대 성능 사이의 디자인 결정이다 .

0

:

Can not deserialize instance of Response.CarriersResponse out of 
START_ARRAY token 
+0

잘 작동합니다. –

0

Response.CarriersResponse[] 클래스로 비 직렬화를 시도하십시오.

Response.CarriersResponse[] responses = mapper.readValue(text, Response.CarriersResponse[].class);