gpt4 book ai didi

java - 使用 Jackson API 在 Java 中实现复杂的递归 JSON 响应

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

我正在使用 jackson 将我的 java 类映射到 JSON。如何编写/设计包含递归属性的复杂响应?我不知道我的叶子离树有多深。我可以有一棵有 1 个节点和 1 个值的树(简单),还有一棵有 N 个节点的树。

例如,我们可以有

{
"glossary_0": {
"glossary_1": {
"glossary_2": {
[...]
"glossary_N" : "value"
}
}
}
}

感谢您的建议

最佳答案

我在解析您的问题时遇到了一些麻烦,所以希望我回答的是正确的问题。

如果您使用的是 Jackson 2.x,则可以使用 @JsonIdentityInfo 来允许 Jackson 用自动生成的 ID 替换重复/递归对象引用(反之亦然)。我建议使用 UUID 生成器,如下所示:

@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@id")
public class MyClass {
private MyClass c1;
private MyClass c2;

//getters and setters here
}

对于上述内容,Jackson 可能会生成如下所示的 JSON(这些不是有效的 UUID,但您明白了):

{
@id: 'abcd-1234-efgh-5678', //randomly generated
c1: null,
c2: {
@id: '9876-efgh-4321-abcd' //randomly generated,
c1: 'abcd-1234-efgh-5678', //set to the id of the referenced object to prevent infinite recursion
c2: null
}
}

对于上述内容,您必须使用代码来“重新水化”JSON 对象(将 ID 引用替换为实际引用的对象),并且如果您将其发送回服务器以进行“脱水”该对象JSON 将其映射回 Java 对象。我建议为此使用 UUID,因为实际上可以保证,如果您看到已经作为 @id 遇到的属性值,它实际上是对该对象的引用(而不仅仅是字符串值)这恰好是相同的)。

关于java - 使用 Jackson API 在 Java 中实现复杂的递归 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21537699/

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