2012-04-03 10 views
1

私はJsonの文字列をデコードするために何かを組み立てようとしています。Json/Gsonの問題 - なぜnullになるのですか?

今、私はファイルを読み込み、それをそのコンポーネントに解析しようとしています。 私は状態の値をうまく読み取ることができますが、リストを読み込もうとするとnullが返ってきます。理由はわかりません。

私が間違っていることを誰にも見せてもらえますか?ここで

は、ファイルの内容である:ここで

{ 
    "results" : [ 
     { 
      "long_name" : "Long Name 1", 
      "short_name" : "Short Name 1" 
     }, 
     { 
      "long_name" : "Long Name 2", 
      "short_name" : "Short Name 2" 
     } 
    ], 
    "status" : "OK" 
} 

は、私はそれが読まれた後にファイルを解析するために使用していたコードである:ここでは

  BufferedReader br = 
      new BufferedReader(new FileReader(aFile)); 
      StringBuilder builder = new StringBuilder(); 
      String st; 
      for (String line = null; (line = br.readLine()) != null;) 
      { 
       st = line.trim(); 
       builder.append(st); 
      } 
      br.close(); 
      String data = builder.toString(); 
      Results rslt = new Gson().fromJson(data, Results.class); 
      List<ResultsData> resultsData = rslt.getResultsData(); 
      System.out.println("ResultsData  : "+resultsData);  // This is null 
      System.out.println("Status   : "+rslt.getStatus()); // This is OK 

は、私が使用しています2つのクラスがあります解析のために:

import java.util.List; 

public class Results { 

    private List<ResultsData> resultsData; 
    public List<ResultsData> getResultsData() { return resultsData; } 
    public void setResultsData(List<ResultsData> l) { resultsData = l; } 

    private String status; 
    public String getStatus() { return status; } 
    public void setStatus(String s) { status = s; } 

} 

そして

public class ResultsData { 

    private String long_name = ""; 
    public String getLong_name() {return long_name;} 
    public void setLong_name(String s) { long_name = s; } 

    private String short_name = ""; 
    public String getShort_name() {return short_name;} 
    public void setShort_name(String s) { short_name = s; } 

} 

答えて

1

私は、JSONファイルがresultsを言うとResultクラス内の対応するフィールドがresultsData命名されたからだと推測します。つまり、スキーマが一致しません。だからあなたのスキーマはどのように見えるのですか?

+2

+1また、Javaコードを変更することなくこの問題を回避するために、この注釈「@SerializedName( "name")」を追加することもできるようです。代わりに、 'FieldNamingPolicy'を使用することができます –

+0

^良い点:) == 1私からのUP! – Kiril

+0

ありがとう、明らかに、私はGson/Json初心者です。 @SerializedName( "name")の参照が何を意味するのか分かりません。少し説明できますか? – Burferd

関連する問題