从gson.fromJson返回的null值

时间:2015-07-10 12:53:10

标签: java json

我的对象中有一些值在从json转换为object时返回值null而其他一些值没有,我无法弄清楚为什么会发生这种情况 这是我要转换的代码

OriginalMovie originalMovie = gson.fromJson(jsonString, OriginalMovie.class);

这是我的json

 {"page":1,
"results":[{"adult":false,
"backdrop_path":"/o4I5sHdjzs29hBWzHtS2MKD3JsM.jpg",
"genre_ids":[878,28,53,12],
"id":87101,"original_language":"en",
"original_title":"Terminator Genisys",
"overview":"The year is 2029. John Connor, leader of the resistance continues the war against the machines.",
"release_date":"2015-07-01",
"poster_path":"/5JU9ytZJyR3zmClGmVm9q4Geqbd.jpg",
"popularity":54.970301,
"title":"Terminator Genisys","video":false,
"vote_average":6.4,
"vote_count":197}],
"total_pages":11666,"total_results":233312}

这是我的基类(包含结果)

package MovieReviewHelper;
import java.util.ArrayList;
import java.util.List;
public class OriginalMovie 
{

    private long page;
    private List<Result> results = new ArrayList<Result>();
    private long totalPages;
    private long totalResults;
    public long getPage() 
    {
        return page;
    }
    public void setPage(long page)
    {
        this.page = page;
    }
    public List<Result> getResults()
    {
        return results;
    }
    public void setResults(List<Result> results)
    {
        this.results = results;
    }
    public long getTotalPages() {
        return totalPages;
    }
    public void setTotalPages(long totalPages) 
    {
        this.totalPages = totalPages;
    }
    public long getTotalResults()
    {
        return totalResults;
    }
    public void setTotalResults(long totalResults)
    {
        this.totalResults = totalResults;
    }

}

这是我的另一个班级

package MovieReviewHelper;

import java.util.ArrayList;
import java.util.List;
public class Result {

    private boolean adult;
    private String backdropPath;
    private List<Long> genreIds = new ArrayList<Long>();
    private long id;
    private String originalLanguage;
    private String originalTitle;
    private String overview;
    private String releaseDate;
    private String posterPath;
    private double popularity;
    private String title;
    private boolean video;
    private double voteAverage;
    private long voteCount;
    public boolean isAdult()
    {
        return adult;
    }
    public void setAdult(boolean adult)
    {
        this.adult = adult;
    }
    public String getBackdropPath() 
    {
        return backdropPath;
    }
    public void setBackdropPath(String backdropPath) 
    {
        this.backdropPath = backdropPath;
    }
    public List<Long> getGenreIds() 
    {
        return genreIds;
    }
    public void setGenreIds(List<Long> genreIds)
    {
        this.genreIds = genreIds;
    }
    public long getId()
    {
        return id;
    }
    public void setId(long id)
    {
        this.id = id;
    }
    public String getOriginalLanguage() 
    {
        return originalLanguage;
    }
    public void setOriginalLanguage(String originalLanguage)
    {
        this.originalLanguage = originalLanguage;
    }
    public String getOriginalTitle() 
    {
        return originalTitle;
    }
    public void setOriginalTitle(String originalTitle) 
    {
        this.originalTitle = originalTitle;
    }
    public String getOverview()
    {
        return overview;
    }
    public void setOverview(String overview)
    {
        this.overview = overview;
    }
    public String getReleaseDate() 
    {
        return releaseDate;
    }
    public void setReleaseDate(String releaseDate) 
    {
        this.releaseDate = releaseDate;
    }
    public String getPosterPath() 
    {
        return posterPath;
    }
    public void setPosterPath(String posterPath)
    {
        this.posterPath = posterPath;
    }
    public double getPopularity()
    {
        return popularity;
    }
    public void setPopularity(double popularity)
    {
        this.popularity = popularity;
    }
    public String getTitle() 
    {
        return title;
    }
    public void setTitle(String title)
    {
        this.title = title;
    }
    public boolean isVideo() 
    {
        return video;
    }
    public void setVideo(boolean video)
    {
        this.video = video;
    }
    public double getVoteAverage() 
    {
        return voteAverage;
    }
    public void setVoteAverage(double voteAverage)
    {
        this.voteAverage = voteAverage;
    }
    public long getVoteCount()
    {
        return voteCount;
    }
    public void setVoteCount(long voteCount) 
    {
        this.voteCount = voteCount;
    }


}

2 个答案:

答案 0 :(得分:2)

您的Json和Class变量应该具有相同的名称。 Json中的backdrop_path和课程中的backdropPath不起作用

答案 1 :(得分:0)

如果这对像我这样花了半天时间来试图解决gson.fromJson()返回具有空值的对象的类似问题的人有所帮助,但是在使用@JsonProperty时使用带下划线的名称并在其中使用Lombok模型类。

我的模型类具有如下所示的属性,并且正在使用Lombok @Data作为类

@JsonProperty(value="dsv_id")
private String dsvId;

所以在我的Json文件中,我使用的是

"dsv_id"="123456"

这是导致空值的原因。我解决问题的方法是将Json更改为以下值,即不带下划线。那为我解决了这个问题。

"dsvId = "123456"