Json / Gson问题 - 为什么我会变空?

时间:2012-04-03 20:30:16

标签: java json gson

我正在尝试整理一些东西来解码Json字符串而没有太多运气。

现在,我正在尝试读取文件并将其解析为其组件。 我可以很好地读取状态值,但是当我尝试读取列表时,我得到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

以下是我用于解析的两个类:

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 个答案:

答案 0 :(得分:1)

我猜是因为JSon文件显示resultsResult类中的相应字段名为resultsData。换句话说:架构不匹配。那么你的架构是什么样的?

相关问题