2016-07-25 29 views
1

Ich habe einen OAuth2-Server, der eine JSON-Zeichenfolge zurückgibt, die Zugriffstoken, Aktualisierungstoken und ihre Gültigkeit bei einer Anforderung mit Grantyp, Benutzeranmeldeinformationen und Clientanmeldeinformationen enthält comes.Below ist die Antwort-Zeichenfolge, die ich bekam.Java: Wie die vom Oauth2-Dienst zurückgegebene JSON-Zeichenfolge dem Modellklassenobjekt zugeordnet wird

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

Jetzt muss ich alle diese Felder in der JSON-String zu einem class.How zur Karte kann ich that.I Notwendigkeit tun Felder an die unten Klasse abzubilden.

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

Antwort

1

Sie können mithilfe Jackson Bibliothek tun.

Versuchen Sie es. Das refreshToken-Tag wird zu einer Klasse in 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

ich die Frage mit der Klasse aktualisiert, dass ich diese fields.I abbilden müssen glaube nicht, ur exmaple wird mir helfen, denn in der JSON-String, die ich dort vorgesehenen 2-Feld mit dem Label „Wert“ und "expiration" und auch das refresttoken-Feld enthalten 2 Unterfelder, die ich trennen muss. – KJEjava48

+0

Das erste Wertfeld sollte auf accessToken und das zweite Wertfeld auf refreshToken abgebildet werden. Ebenso sollte das erste Ablauffeld auf accessTokenValidity und das zweite auf refreshTokenValidity abgebildet werden. – KJEjava48

+0

Irgendeine Lösung von u ?? – KJEjava48