2016-07-25 13 views
1

私は、アクセストークン、リフレッシュトークン、および有効性を含むjson文字列を返すoauth2サーバーを持っています。 come.Belowは私が持っているレスポンス文字列です。Java:Oauth2サービスから返されたjson文字列をモデルクラスオブジェクトにマップする方法

{"value":"yu592e04-o9d5-8724-92a8-c5034df13cae","expiration":"Jul 25, 2016 4:14:31 PM","tokenType":"bearer","refreshToken":{"expiration":"Sep 24, 2016 3:14:31 PM","value":"bb6b7d65-a938-h75b-9cc5-d78b38e7adf9"},"scope":[],"additionalInformation":{}} 

は今、私は下のクラスにフィールドをマップするthat.I必要性を行うことができますclass.HowにJSON文字列内のすべてのこれらのフィールドをマップする必要があります。

public class UserToken{ 
String accessToken; 
Date accessTokenValidity; 
String accessTokenType; 
String refreshToken; 
Date refreshTokenValidity; 
String scope; 
} 

答えて

1

Jacksonライブラリを使用するとできます。

これを試してください。 refreshTokenタグはjavaのクラスになります。

public class Convertor { 

    public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { 
     String json = "{\"value\":\"yu592e04-o9d5-8724-92a8-c5034df13cae\",\"expiration\":\"Jul 25, 2016 4:14:31 PM\",\"tokenType\":\"bearer\",\"refreshToken\":{\"expiration\":\"Sep 24, 2016 3:14:31 PM\",\"value\":\"bb6b7d65-a938-h75b-9cc5-d78b38e7adf9\"}}"; 
     Convertor converter = new Convertor(); 
     UserToken token = converter.fromJson(json); 
     System.out.println(token); 

    } 

    public UserToken fromJson(String json) throws JsonParseException, JsonMappingException, IOException { 
     UserToken token = (UserToken) new ObjectMapper().readValue(json, UserToken.class); 

     return token; 
    } 

} 

class UserToken { 

    String value; 
    String expiration; 
    String tokenType; 
    RefreshToken refreshToken; 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    public String getExpiration() { 
     return expiration; 
    } 

    public void setExpiration(String expiration) { 
     this.expiration = expiration; 
    } 

    public String getTokenType() { 
     return tokenType; 
    } 

    public void setTokenType(String tokenType) { 
     this.tokenType = tokenType; 
    } 

    public RefreshToken getRefreshToken() { 
     return refreshToken; 
    } 

    @JsonProperty("refreshToken") 
    public void setRefreshToken(RefreshToken refreshToken) { 
     this.refreshToken = refreshToken; 
    } 



    @Override 
    public String toString() { 

     return "value " + value + "expiration " + expiration + "refreshToken.Expiration " + refreshToken.getExpiration() 
       + " refreshToken.getValue: " + refreshToken.getValue(); 
    } 
} 

class RefreshToken { 
    String expiration; 
    String value; 

    public String getExpiration() { 
     return expiration; 
    } 

    public void setExpiration(String expiration) { 
     this.expiration = expiration; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

} 
+0

私はラベル「値」との2分野があるので、私は提供JSON文字列に、私はウルexmapleが私を助けるだろうとは思わないこれらfields.Iをマップする必要があるクラスで質問を更新し、 "expiration"とrefreshtokenフィールドには、2つのサブフィールドがあり、それらを分離する必要があります。 – KJEjava48

+0

最初の値フィールドはaccessTokenにマップし、2番目の値フィールドはrefreshTokenにマッピングする必要があります。同様に、最初の有効期限フィールドはaccessTokenValidityに、2番目の有効期限フィールドはrefreshTokenValidityにマッピングする必要があります。 – KJEjava48

+0

u? – KJEjava48

関連する問題