使用GSON将展平的JSON密钥反序列化为正确的对象

时间:2016-10-18 07:30:24

标签: java json gson

我们提取了一个外部API(我们无法更改我们收到的JSON),它会生成带有扁平键的JSON。例如:

{
    "composite.key": "value",
    "normal": "another value",
    "composite.key2": "back here again..."
}

我们理想地希望反序列化为:

public class SomeObject {
    public String normal;
    public Composite composite;
}

public class Composite {
    public String key;
    public String key2;
}

虽然我们知道我们可以编写自定义反序列化器,但我首先想要检查GSON中是否支持使用注释或其他方法。

2 个答案:

答案 0 :(得分:0)

您可以在Java字段上使用GSON的{{3}}注释。

像这样的东西

public class Composite {
    @SerializedName("composite.key")
    public String key;

    @SerializedName("composite.key2")
    public String key2;
}

答案 1 :(得分:0)

我认为这样做的长短只是使用Jackson,它通过用@JsonUnwrapped(prefix="composite.")注释包装对象来提供内置支持。