当前位置: 首页 > 面试题库 >

使用GSON将POJO序列化为具有不同名称的JSON?

唐宇定
2023-03-14
问题内容

我有一个像这样的POJO,我正在使用GSON序列化为JSON:

public class ClientStats {

    private String clientId;
    private String clientName;
    private String clientDescription;

    // some more fields here


    // getters and setters

}

这是我的做法:

ClientStats myPojo = new ClientStats();

Gson gson = new Gson();
gson.toJson(myPojo);

现在我的json将是这样的:

{"clientId":"100", ...... }

现在我的问题是:有什么办法可以clientId代替更改clientId变量名呢?在Gson中,我可以在clientId变量顶部使用任何注释吗?

我想要这样的东西:

{"client_id":"100", ...... }

问题答案:

您可以使用@SerializedName(“ client_id”)

public class ClientStats {

    @SerializedName("client_id")
    private String clientId;
    private String clientName;
    private String clientDescription;

    // some more fields here


    // getters and setters

}

编辑:

您也可以使用它,以通用方式更改所有字段

Gson gson = new GsonBuilder()
    .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
    .create()


 类似资料:
  • 我正在努力用本地化反序列化世界天气在线API结果。 是否有更好、更简单的解决方案,只为lang对象编写一个自定义反序列化器,并允许GSON自动反序列化其余数据?

  • 问题内容: 使用GSON,如何将列表的类名称附加到输出的json字符串中?我浏览了api,错过了做此操作的任何参考。我在实际代码中使用了GsonBuilder,但也没有看到任何选项。 这给出以下输出: json = [{“ name”:“ Alice”},{“ name”:“ Bob”}] 如何获得以下输出? 或类似的东西。 json = {“ person”:[{“ name”:“ Alice”

  • 问题内容: 我一直在计划使用simpleXML来满足序列化需求,但是我想尝试使用JSON来学习一些新知识。 这是我用来尝试使用Gson 1.7.1序列化测试POJO的ArrayList的代码。 注意:为了简化代码,我删除了字符串“ s”的读取器/写入器。 这是我得到的输出: 在我的新手看来,这看起来是正确的。仅,反序列化的对象列表包含基本对象,而不是TestObject的I序列化。谁能给我解释一下

  • 我之前的问题没有得到任何结果,可能是我问得不对,或者太详细了。 现在我的基本问题是,如何将一个具有一个类名的JSON对象反序列化为一个具有不同类名的Java对象? 例如,服务器发送/期望的JSON类是“18”(我对此控制为零)。我的Java班不可能是“18”,所以是“_18”。 简单地执行new Gson().fromjson()没有任何帮助,即使使用了不同的命名策略;_18对象始终为NULL。从

  • 问题内容: 我正在从API检索JSON。我正在使用newtonsoft(这是json.net吗?)将其反序列化为对象列表。有用。 不幸的是,我还需要将此作为JSON传递给其他人(只有我有权访问它们,他们才能直接调用API)。不幸的是,我说这是因为我需要输出与接收到的JSON不同的JSON(属性名称必须不同)。 例如,我有一个名为Person的类,具有一个名为Name的属性。我想获取“人物”,因此我

  • 使用GSON如何将列表的类名附加到输出的json字符串中?我已经浏览了api,但没有找到任何与此相关的参考资料。我在真实代码中使用了GsonBuilder,但也没有看到任何选项。 这将提供以下输出: json=[{“name”:“Alice”},{“name”:“Bob”}] 如何实现以下输出?或者类似的东西。 json={"人":[{"名字":"爱丽丝"},{"名字":"鲍勃"}]} 或 jso