Java InputStream 到 JsonObject - GSON

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30085721/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 09:06:02  来源:igfitidea点击:

InputStream to JsonObject - GSON

javaandroidgson

提问by JochemQuery

I've a lot of trouble converting a result from this api to a JsonObject.

将此 api 的结果转换为 JsonObject 时遇到了很多麻烦。

The "result" stays null no matter what I try to do.

无论我尝试做什么,“结果”都保持为空。

  URL url = new URL(urlString);
  InputStream input = url.openStream();
  Reader reader = new InputStreamReader(in, "UTF-8");
  JsonResult result  = new Gson().fromJson(reader, JsonResult.class);

JsonResult class

JsonResult 类

public class JsonResult {
    private String status;
    private Meta meta;
    private ArrayList<Player> players;
}

class Meta{
    private String count;
}

Json:

杰森:

{"status":"ok","meta":{"count":12},"data":[{"nickname":"DataBase","account_id":500566109},{"nickname":"database007","account_id":514382449},{"nickname":"Database04","account_id":504367425},{"nickname":"database08","account_id":515081772},{"nickname":"database1","account_id":503282284},{"nickname":"database1221","account_id":506709044},{"nickname":"database123","account_id":508409172},{"nickname":"database1337","account_id":501661259},{"nickname":"database169","account_id":503884400},{"nickname":"database2","account_id":504337382},{"nickname":"database93","account_id":518691821},{"nickname":"databaseking66","account_id":505911069}]}

Note: This is for a school project

注意:这是一个学校项目

Note 2: I did check and test a lot of other solutions from SO but didn't find or understand the correct one.

注 2:我确实检查并测试了来自 SO 的许多其他解决方案,但没有找到或理解正确的解决方案。

Edit 1:

编辑1:

public class JsonResult {
    @SerializedName("status")
    public String status;
    @SerializedName("meta")
    public Meta meta;
    @SerializedName("data")
    public Player[] players;
}

class Meta{
    @SerializedName("count")
    private String count;
}

Player class

播放器类

public class Player {

    private int account_id;
    private String nickname;

    public Player(int account_id, String nickname){
        this.account_id = account_id;
        this.nickname = nickname;
    }


    //Generated
    public void setAccount_id(int account_id) {
        this.account_id = account_id;
    }

    //Generated
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String toString() {
        return this.account_id + this.nickname;
    }
}

采纳答案by Ads

In your JsonResult class change

在您的 JsonResult 类中更改

public class JsonResult {
    private String status;
    private Meta meta;
    @SerializedName("data")
    private ArrayList<Player> players;
}