2012-11-05 132 views
3

我已經創建了一個Bean來表示我將要解析的JSON對象。問題是,這個bean有嵌套的類。因此,編譯失敗。我通過刪除課程進行驗證。該應用程序編譯正確。這是錯誤我得到:由於嵌套bean,無法在playframework中使用GSON解析JSON

2012-11-05 19:23:30,783 ERROR ~ 

@6c8po9gbf 
Internal Server Error (500) for request GET /favicon.ico 

Oops: NullPointerException 
An unexpected error occured caused by exception NullPointerException: null 

play.exceptions.UnexpectedException: Unexpected Error 
    at play.Play.start(Play.java:545) 
    at play.Play.detectChanges(Play.java:629) 
    at play.Invoker$Invocation.init(Invoker.java:198) 
    at Invocation.HTTP Request(Play!) 
Caused by: java.lang.NullPointerException 
    at play.classloading.ApplicationCompiler$2.acceptResult(ApplicationCompiler.java:266) 
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:478) 
    at play.classloading.ApplicationCompiler.compile(ApplicationCompiler.java:282) 
    at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:424) 
    at play.Play.start(Play.java:505) 
    ... 3 more 

的JavaBean類是

import java.util.List; 

import com.google.gson.Gson; 

public class GsGetChallenge { 

    public static void main(String... args) throws Exception { 

     String json = "{\"response\":\n" + " {\"salt\":\n" 
       + " \"zP9UFJOklQLePOqf0lSh0NgdlXWAt8qhIq4adcP1opdkz8UwVz\",\n" 
       + " \"status\":\"SUCCESS\",\n" 
       + " \"challenge\":\"BXuQQ2056310911\"\n" + "}}"; 

     ResponseData responsee = new Gson().fromJson(json, ResponseData.class); 

     // Show it. 
     System.out.println(responsee.getResponse().getChallenge()); 
    } 

} 

class ResponseData { 

    private Response response; 

    public static class Response { 
     private String salt; 
     private String status; 
     private String challenge; 

     public String getSalt() { 
      return salt; 
     } 

     public void setSalt(String salt) { 
      this.salt = salt; 
     } 

     public String getStatus() { 
      return status; 
     } 

     public void setStatus(String status) { 
      this.status = status; 
     } 

     public String getChallenge() { 
      return challenge; 
     } 

     public void setChallenge(String challenge) { 
      this.challenge = challenge; 
     } 
    } 

    public Response getResponse() { 
     return response; 
    } 
    public void setResponse(Response response) { 
     this.response = response; 
    } 
} 

我能做些什麼用GSON,在這種情況下?我正在使用遊戲1.2.4。

+1

你從哪裏得到編譯失敗?這裏提供的所有代碼編譯得很好。 –

+0

當我在提示符下鍵入'play run - %dev'時,我得到錯誤信息。 – theTuxRacer

+0

我能夠通過將'ResponseData'類移動到另一個文件來進行編譯。 – theTuxRacer

回答

0

將ResponseData移至另一個.java或將ResponseData移至GsGetChallenge並將其更改爲靜態類GsGetChallenge。像

public static void index() { 
    String json = "{\"response\":\n" + " {\"salt\":\n" 
    ... 
} 

static class ResponseData { 
    private Response response; 
    ...