java - 使用 GSON 序列化嵌入式对(键/值)而不是对象

标签 java json gson

我想在 GSON 中创建一个自定义序列化器,在对象中插入键/值对,而不是新对象。例如,假设:

class Car {
    @Expose
    String model;
    @Expose
    Manufacturer manufacturer;
}

class Manufacturer {
    @Expose
    String name;
    @Expose
    String from;
}

我想得到这样的 JSON:

"car":{
    "model":"beatle",
    "manufacturer":"volkswagen",
    "country":"Germany"
}

但无论我如何编码序列化器,它都坚持在“car”内创建一个制造商对象

"manufacturer":{
    "name":"volkswagen",
    "country":"Germany"
}

如何解决这个问题,只获取键/值对?

PS:我无法对类进行重大更改,因为它们正在映射数据库。这只是一个模拟我的问题的例子。

最佳答案

使用自定义序列化程序应该会有所帮助。

private class ManufacturerSerializer implements JsonSerializer<Manufacturer> {
  public JsonElement serialize(Manufacturer src, Type typeOfSrc, JsonSerializationContext context) {
    return new JsonPrimitive(src.getName()); // or src.name public.
  }
}

引用这个:https://sites.google.com/site/gson/gson-user-guide/#TOC-Custom-Serialization-and-Deserialization

关于java - 使用 GSON 序列化嵌入式对(键/值)而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344872/

相关文章:

java - 如何在 JTextArea swing 中实现 autosugesion

java - Tosca Angular table 转向

javascript - 具有固定布局的 d3.js 绘图网络

java - 如何将 DefaultMutableTreeNode (Java) 序列化为 JSON?

java - Volley 请求给出的响应不准确,但链接数据正确

java - 如何在 Android 应用程序中使用 GSON 从 Youtube API 读取 JSON-c 数据

java - 我在提交详细信息时遇到以下错误 ORA-01745 : invalid host/bind variable name

java - 如何使用我们在SD卡中创建的 key (符合全局平台的智能卡)

asp.net-mvc - 如何解决 JavaScriptSerializer 中超出 maxJsonLength 的异常?

javascript - PHP/JavaScript : how to pass array from PHP to JavaScript