2017-09-05 6 views
1

나는이 같은 JSON, 나는 내가 위해 JSON 노드를 사용했다json 노드의 동적 키를 클래스에 매핑하는 방법은 무엇입니까?

{ 
    "auth": [ 
    { 
     "user_admin": [ 
     { 
      "name": [ 
      "harry" 
      ], 
      "department": [ 
      "MC" 
      ], 
      "userid": [ 
      "1234" 
      ] 
     } 
     ] 
    }, 
    { 
     "user_employee": [ 
     { 
      "name": [ 
      "stella" 
      ], 
      "department": [ 
      "CC" 
      ], 
      "role": [ 
      "employee" 
      ] 
     } 
     ] 
    } 
    ], 
    "language":"english", 
    "sub": "f598ab" 

} 

클래스 UserData.java에 JsonNode로 인증 간주 한 객체 매퍼를 사용하여 클래스에이를 매핑하는 데 사용했다가 auth을 사용하여 아래와 같이 UserData.java 클래스에 매핑하십시오.

@[email protected] 
    private JsonNode authorization; 
    @[email protected] 
    private String language; 
    @[email protected] 
    private String sub; 

는 지금은 이름, 부서, 사용자 ID를해야합니다 다른 클래스에 동적 인 값 user_admin 및 user_employee를 매핑 할. 클래스 auth.java를 작성해,이 코드를 거기에 넣습니다.

@Getter @Setter 
     private List< String> name; 

     @Getter @Setter 
     private List<String> department; 

     @Getter @Setter 
     private List<String> userid; 
     @Getter @Setter 
     private List<String> role; 

지금 나는 그것을지도하기 위해 아래의 코드를 시도,하지만 난 내가 가진

UserData mappedObject= (UserData)commonUtils.readJsonStringRespondToObjRequest((json), UserData.class); 
Auth roleData= mapper.treeToValue(mappedObject.getAuth(), Auth.class); 

오류를 얻고 작동하지 않는 그것의 당신의 JSON 구조 auth이라고

Can not deserialize instance of Auth.java out of START_ARRAY 
+0

단일 Auth 개체 대신 Auth 배열로 역 직렬화를 시도하십시오. – alayor

+0

어떻게 할 수 있습니까? @alayor – maya

답변

0

을 감안할 때입니다 array이 배열을 Auth 배열로 변환해야합니다.

Auth[] roleData = mapper.treeToValue(mappedObject.getAuth(), Auth[].class); 

또한 Auth 클래스에는 이러한 속성이 있어야합니다.

class Auth { 
    @Getter @Setter 
    UserAdmin user_admin; 
    @Getter @Setter 
    UserEmployee user_employee; 
    @Getter @Setter 
    String language; 
    @Getter @Setter 
    String sub; 
} 

그런 다음 UserAdminUserEmployee, 당신은 JSON에서 각 속성 (이름, 부서 등)에 해당하는 필드가 있어야합니다.

+0

user_admin과 user_employee가 동적 인 @alayor이기 때문에 예기치 않은 필드 인 user_admin을줍니다. – maya

+0

'Auth' 클래스에는'user_admin'과'user_employee' 필드가 없기 때문에 에러가납니다. – alayor

+0

이러한 값은 동적이며 응답에서 응답으로 변경됩니다. 어떻게 잡으려고합니까? 오랫동안 막혔습니다.이 @alayor로 도와주세요. – maya