2012-11-05 2 views
3

구문 분석 할 JSON 객체의 표현으로 Bean을 만들었습니다. 문제는 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 

자바 빈즈 클래스는

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

다른 .java로 ResponseData를 이동하거나 ResponseData를 GsGetChallenge로 이동하여 정적 클래스 GsGetChallenge로 변경하십시오. like

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

static class ResponseData { 
    private Response response; 
    ...