2015-09-04 106 views
2

我想解析JSON来获取一些值。反序列化Gson NullPointer?

{ 
"username":"[email protected]", 
"roles: 
     { 
     "ROLE_Student_Trial":true, 
     "ROLE_student":true, 
     "ROLE_Student_Unlimited":true 
     }, 
"type":"student", 
"lastLogin":1441305986000, 
"token":"123" 
} 

这是我如何反序列化它

JsonObject obj = new JsonParser().parse(jsonString).getAsJsonObject(); 

String userName = obj.get("username").getAsString(); 
JsonObject roles = obj.get("roles").getAsJsonObject(); 

Boolean isTrial = roles.get("ROLE_Student_Trial").getAsBoolean(); 
Boolean isStudent = roles.get("ROLE_Student").getAsBoolean(); 
Boolean isUnlimited = roles.get("ROLE_Student_Unlimited").getAsBoolean(); // LoginTest.java:31 

long lastLogin = obj.get("lastLogin").getAsLong(); 
int token = obj.get("token").getAsInt(); 
String type = obj.get("type").getAsString(); 

System.out.println(userName); 

if(isTrial){ 
    System.out.println("Student trial is on last login " + timeConverter(lastLogin)); 
} 
if(isStudent){ 
    System.out.println("Student access level"); 
} 
if(isUnlimited){ 
    System.out.println("Student is unlimited as " + type + " and its token = " + token); 
} 

我试图让内JSON的值, 但我得到的NullPointerException。

Exception in thread "main" java.lang.NullPointerException 
     at loginActivityHttpURL.LoginTest.main(LoginTest.java:31) 
+0

哪一行是LoginTest.java:31? – KDM

+2

@Pythonian,你*知道JSON是区分大小写的,对吗?我在那里看到一个“学生”代替“学生” –

+0

@TobiaTesan哦谢谢,不,我不知道,我是JSON和GSON的新手。这就是问题! – Omkar

回答

1

我回答我自己的问题。

JSON区分大小写,所以在("ROLE_Student") gson找不到任何值。相反,我纠正它与("ROLE_student"),它的工作。

感谢@Tobia Tesan

+0

如果您解决了自己的问题,请继续并接受您自己的答案! – iagreen

+0

需要2天才能接受自己的答案。等待相同的原因。 – Omkar

0

改变这一行

Boolean isStudent = roles.get("ROLE_Student").getAsBoolean(); 

Boolean isStudent = roles.get("ROLE_student").getAsBoolean();