gpt4 book ai didi

java - 在 Java 中反序列化包含 __type 而不是 @class 的 JSON

转载 作者:行者123 更新时间:2023-12-01 19:12:43 26 4
gpt4 key购买 nike

我正在处理 JSON,如下所示:

 "locale": {
"__type": "com.package1.package2.className",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}

之前,我曾经获取以下 JSON:

 "locale": {
"@class": "com.package1.package2#<className>",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}

现在,在下游服务发生更改之前,我能够反序列化 json 并将这些值映射到类,但现在由于 @class 已替换为 __type,所以反序列化器无法工作。

如何将 __type 转换为 @class。

我不想使用替换功能,因为 JSON 比上面显示的要复杂得多,也因为它非常 hacky。有没有一个图书馆可以自己做到这一点?我无法控制我收到的 JSON。

我不想为此编写自己的 POJO,因为相同的 POJO 已经在不同的包中可用,但以 className 作为其参数而不是 __type。

最佳答案

没有看到你的解串器,我无法弄清楚它为什么不工作。但如果您可以为此创建自己的 POJO,那么使用 @JsonAlias(在 Jackson 中)会容易得多。

POJO

class MyPojo {
private Locale locale;

//general getters and setters
}

class Locale {
@JsonAlias({"__type", "@class"})
private String typeOrClass;

private String key1;
private String key2;
private String key3;

//general getters and setters
}

代码片段

ObjectMapper mapper = new ObjectMapper();
MyPojo myPojo = mapper.readValue(jsonStr, MyPojo.class);

关于java - 在 Java 中反序列化包含 __type 而不是 @class 的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com