2017-07-05 43 views
-3

我是新來的JSON解析問題,我有以下JSON對象,我需要從一開始的用戶對象下方的Json如何從JSON字符串拉特定對象

{ 
    "aud": "RoomyClinetApps", 
    "sub": "AAAA", 
    "User": { 
    "firtsName": "Godavarthi", 
    "LastName": "chaitanya" 
    }, 
    "iss": "Roomy", 
    "iat": 1499279510 
} 

下面是我的代碼想拉User對象,其中上述JSON是在jsonInString變量時,我試圖T打印我得到空

ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
      User user= mapper.readValue(jsonInString.toString(), User.class); 

System.out.println(user.getFirtsName()); --> Null 


public class User { 
    @JsonProperty 
    private String firtsName; 
    @JsonProperty 
    private String LastName; 
} 

可能有人請我提供一個工作代碼這是比較明顯的。

由於 切塔尼亞

+0

'用戶'不在該JSON的根部。 –

+0

指定您收到的錯誤消息。看起來像'mapper.readValue(jsonInString.toString(),User.class)'將返回一個異常,因爲整個JSON不能轉換爲** User **。 – Manindar

+0

@Manindar他們提到他們沒有得到一個錯誤。該屬性只包含'null'。他們已將'FAIL_ON_UNKNOWN_PROPERTIES'設置爲'false'。 –

回答

0

測試下面的代碼。它爲我工作。嘗試一次。

public class Test { 

    public static void main(String[] args) throws IOException { 
     String jsonInString = "{\n" 
       + " \"aud\": \"RoomyClinetApps\",\n" 
       + " \"sub\": \"AAAA\",\n" 
       + " \"user\": {\n" 
       + " \"firtsName\": \"Godavarthi\",\n" 
       + " \"LastName\": \"chaitanya\"\n" 
       + " },\n" 
       + " \"iss\": \"Roomy\",\n" 
       + " \"iat\": 1499279510\n" 
       + "}"; 
     ObjectMapper mapper = new ObjectMapper().configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
     JsonObject jobj = mapper.readValue(jsonInString.toString(), JsonObject.class); 

     System.out.println(jobj.getUser().getFirtsName()); 
    } 

} 

class User { 

    private String firtsName; 
    private String LastName; 

    public String getFirtsName() { 
     return firtsName; 
    } 

    public void setFirtsName(String firtsName) { 
     this.firtsName = firtsName; 
    } 

    public String getLastName() { 
     return LastName; 
    } 

    public void setLastName(String LastName) { 
     this.LastName = LastName; 
    } 

} 

class JsonObject { 

    private String aud; 
    private String sub; 
    private User user; 
    private String iss; 
    private long iat; 

    public String getAud() { 
     return aud; 
    } 

    public void setAud(String aud) { 
     this.aud = aud; 
    } 

    public String getSub() { 
     return sub; 
    } 

    public void setSub(String sub) { 
     this.sub = sub; 
    } 

    public User getUser() { 
     return user; 
    } 

    public void setUser(User user) { 
     this.user = user; 
    } 

    public String getIss() { 
     return iss; 
    } 

    public void setIss(String iss) { 
     this.iss = iss; 
    } 

    public long getIat() { 
     return iat; 
    } 

    public void setIat(long iat) { 
     this.iat = iat; 
    } 

} 

希望這會有幫助。

+0

嗨@Manindar你分享的代碼工作正常,但我從JWT解密令牌中收回Json字符串,所以當我在我的字符串上應用相同的Ode時,它失敗了「線程中的異常」main 「com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:無法識別的字段」User「和我的json字符串是{」aud「:」RoomyClinetApps「,」sub「:」AAAA「,」User「:{」firtsName「:」 Godavarthi「,」LastName「:」chaitanya「},」iss「:」Roomy「,」iat「:1499312212} – chaitanya

+0

在** JsonObject **類中,將User類的引用變量名稱從用戶更新爲** User **。它會爲你工作,如果它有效,請接受它。 – Manindar

+0

感謝兄弟工作的情況下,你救了我,我改變了它的工作 – chaitanya

-1
public class User { 
    @JsonProperty 
    private String firtsName; 
    @JsonProperty 
    private String LastName; 
} 

public class JsonObject{ 
public string aud; 
public String sub; 
public User user; 
public String iss; 
public long iat; 

} 

ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
      JsonObject user= mapper.readValue(jsonInString.toString(), JsonObject.class); 
+0

我在線程「主」java.lang.NullPointerException異常 \t在com.Roomy.JwtKey.main( JwtKey.java:50) – chaitanya