当前位置: 首页 > 知识库问答 >
问题:

利用Gson将Json转换为Java对象

宗政卓
2023-03-14
{
    "response": {
        "players": [
            {
                "steamid": "---",
                "communityvisibilitystate": 1,
                "profilestate": 1,
                "personaname": "---",
                "lastlogoff": 1429915502,
                "profileurl": "---",
                "avatar": "---",
                "avatarmedium": "---",
                "avatarfull": "---",
                "personastate": 0
            }
        ]

    }
}

我使用的是名为Gson的Google JSON API,在设置Java类以便使用fromjson()方法时遇到了困难。

从JSON数据中,我知道有一个包含所有数据的players对象数组。让我感到困惑的是外部标记response。我知道我必须构造一个表示players对象的类,但是我是否也必须创建一个表示response的类,因为它包含players

目前,我有一个名为response.java的文件,其中包含以下内容:

public class Response {

    private ArrayList<Player> playerSummaries = new ArrayList<Player>();

    public String toString() {
        return playerSummaries.get(0).toString();
    }

}


class Player {
    private String steamid;
    private String personaname;


    public String getSteamID() {
        return steamid;
    }

    public void setSteamID(String newSteamID) {
        steamid = newSteamID;
    }

    public String getPersonaName() {
        return personaname;
    }

    public void setPersonaName(String name) {
        personaname = name;
    }

    //Rest of getters and setters omitted.

    @Override
    public String toString() {
        return "<<" + "steamid=" + steamid + "\n" + "name=" + personaname + "\n" + ">>";
    }
}

我只包括了我计划使用的变量。上面的JSON数据包含在一个名为JSONData的字符串中,这就是我在main方法中测试的内容:

Response response = gson.fromJson(jsonData, Response.class);

System.out.println(response.getPlayerAt(0));

共有1个答案

干子瑜
2023-03-14

替换

private ArrayList<Player> playerSummaries = new ArrayList<Player>();

private ArrayList<Player> players = new ArrayList<Player>();

GSON使用反射来查找它应该填充哪个字段。在您的示例中,它正在查找是否有一个名为players的字段,而您没有这个字段。

您也不需要实例化字段,GSON将为您这样做。

class MyObject {
    public Response response;
}

MyObject myObject = gson.fromJson(jsonData, MyObject.class);
 类似资料:
  • 这里是我被困的地方,我在哪里创建我的新Gson()来在发送数据之前解析它?

  • 问题内容: 假设我有json字串 现在我有一个班级用户 现在如何将上述json字符串转换为用户类对象 问题答案: 试试这个:

  • 本文向大家介绍如何使用GSON库将Java对象转换为JSON?,包括了如何使用GSON库将Java对象转换为JSON?的使用技巧和注意事项,需要的朋友参考一下 JSON或JavaScript Object Notation是一种轻量级的基于文本的开放标准,旨在用于人类可读的数据交换。JSON使用的约定是程序员已知的,包括C,C ++,Java,Python,Perl等。 有几种Java库可用于处理

  • 问题内容: 是否有可能使用Gson或JAVA上的任何其他库将匿名对象类型序列化为JSON? 在此示例中,字符串jsonstr返回空值。 问题答案: Gson不支持该功能。从用户指南 与内部类,匿名类和本地类中的外部类相对应的字段将被忽略,并且不包含在序列化或反序列化中 您可以使用一个(或其他)表示匿名类型的超类来描述要使用重载方法进行序列化的内容,但是您仍然会丢失匿名子类中定义的任何新字段。(显然

  • 问题内容: 我有一个列表,我需要使用GSON将其转换为JSON对象。我的JSON对象中包含JSON数组。 以下是我的代码,其中我需要将列表转换为其中具有JSON数组的JSON对象- 到目前为止,列表中只有两项-所以我需要这样的JSON对象- 做这个的最好方式是什么? 问题答案: 如果在您的方法中为,则应进行序列化。 这将为您提供所需的JSON输出。

  • 问题内容: 我正在从返回JSON格式数据的服务器请求数据。发出请求时,将HashMap转换为JSON并不困难,但另一种方式似乎有些棘手。JSON响应如下所示: 哪种方法最容易访问此数据?我正在使用GSON模块。 问题答案: