2013-04-10 3 views
2

GSON을 사용하여 Java Object로 일부 JSON을 구문 분석하려고합니다. 내 json이 여기 있습니다 : http://ec2-50-112-212-186.us-west-2.compute.amazonaws.com/ske.jsonJava bean에 JSON 구문 분석 나머지 null

다음은 Java Java Bean입니다. 나는 JsonGen의 도움을 만든 : 내가 호출 할 때

package ske.entities; 

import java.util.List; 

public class WordSketch{ 

    private List<Gramrels> gramrels; 
    private String corp_full_name; 

    public String getCorp_full_name() { 
     return corp_full_name; 
    } 
    public void setCorp_full_name(String corp_full_name) { 
     this.corp_full_name = corp_full_name; 
    } 
    public List<Gramrels> getGramrels(){ 
     return this.gramrels; 
    } 
    public void setGramrels(List<Gramrels> gramrels){ 
     this.gramrels = gramrels; 
    } 

    public static class Gramrels { 

     private List<Words> words; 
     private Number count; 
     private String name; 
     private Number score; 
     private Number seek; 

     public List<Words> getWords(){ 
      return this.words; 
     } 
     public void setWords(List<Words> words){ 
      this.words = words; 
     } 
     public Number getCount(){ 
      return this.count; 
     } 
     public void setCount(Number count){ 
      this.count = count; 
     } 
     public String getName(){ 
      return this.name; 
     } 
     public void setName(String name){ 
      this.name = name; 
     } 
     public Number getScore(){ 
      return this.score; 
     } 
     public void setScore(Number score){ 
      this.score = score; 
     } 
     public Number getSeek(){ 
      return this.seek; 
     } 
     public void setSeek(Number seek){ 
      this.seek = seek; 
     } 
    } 

    public static class Words { 
     private Number count; 
     private Number id; 
     private String lempos; 
     private Number score; 
     private Number seek; 
     private String word; 

     public Number getCount(){ 
      return this.count; 
     } 
     public void setCount(Number count){ 
      this.count = count; 
     } 
     public Number getId(){ 
      return this.id; 
     } 
     public void setId(Number id){ 
      this.id = id; 
     } 
     public String getLempos(){ 
      return this.lempos; 
     } 
     public void setLempos(String lempos){ 
      this.lempos = lempos; 
     } 
     public Number getScore(){ 
      return this.score; 
     } 
     public void setScore(Number score){ 
      this.score = score; 
     } 
     public Number getSeek(){ 
      return this.seek; 
     } 
     public void setSeek(Number seek){ 
      this.seek = seek; 
     } 
     public String getWord(){ 
      return this.word; 
     } 
     public void setWord(String word){ 
      this.word = word; 
     } 
    } 
} 

는 그러나 WordSketch gramrels = gson.fromJson(new InputStreamReader(response.getEntity().getContent()), WordSketch.class);corp_full_name가 작성되어

하지만 gramrels은 null입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

나는 처음으로 Json을 사용하므로 아직 익숙하지 않습니다.

감사합니다.

답변

3

문제는 단지 필드 이름 일 뿐이라고 생각합니다.

클래스 이름은 "gramrels"이지만 JSON 응답에서는 "Gramrels"(대문자)입니다. GSON은 관심있는 필드 만 JSON 응답에서 가져올 수 있기 때문에 프로그램의 변수 이름과 JSON의 변수 이름이 같아야합니다. 응답에서 JSON 값을 찾으면 어떤 클래스 속성과도 일치하지 않으면 GSON은 그 값을 무시합니다.

나는이 방법으로, 주석 @SerializedName를 사용하는 것이 좋습니다 :

@SerializedName("Gramrels") 
private List<Gramrels> gramrels; 

이 방법은 자바 명명 규칙에 따라 소문자에 속성의 이름을 유지할 수 있습니다,하지만 당신은 것을 GSON을 말하는거야 다른 변수를 "Gramrels을"해당됩니다 JSON 응답에서이 매개 변수의 이름 ...

당신은 예를 들어, 동일한 작업을 수행도 할 수 있습니다

@SerializedName("corp_full_name") 
private String corpFullName; 

corp_full_name은 Java 명명 규칙을 따르지 않으므로 ...

+0

spot on! 감사! –