gpt4 book ai didi

json - 在 GWT 上使用 AutoBean 解析未知类型的 JSON 对象

转载 作者:行者123 更新时间:2023-12-04 14:32:57 26 4
gpt4 key购买 nike

我的服务器以 JSON 格式返回对象列表。他们可能是 Cat s 或 Dog s,例如。

当我知道他们都会是 Cat s,我可以设置AutoBeanCodex轻松工作。但是,当我不知道它们是什么类型时……我该怎么办?

我可以给我的所有实体一个类型字段,但是我必须在将每个实体传递给 AutoBeanCodex 之前解析每个实体。 ,这接近于击败该点。我还有什么其他选择?

最佳答案

前几天刚玩这个,打了几个小时,尝试 @Category方法和其他方法,直到我发现:您可以创建类型 Splittable 的属性,它表示具有 bool 值/字符串/列表/映射的一些编码的底层传输类型。在我的例子中,我知道一些在设计时通过线路的包络类型,并且基于一些其他属性,一些其他字段可以是任意数量的其他 autobeans。

你甚至不需要在编译时知道另一个 bean 的类型,你可以使用 Splittable 获取值。的方法,但如果无论如何都使用 autobeans,最好定义包装的数据。

interface Envelope {
String getStatus();
String getDataType();
Splittable getData();
}

(如果您在发送数据的同时接收数据,则可能需要 setter - 将 bean 编码为可拆分的以将其发送到信封中甚至比解码它更容易)

通过网络发送的 JSON 被解码(可能使用 AutoBeanCodex)到 Envelope类型,并在您确定必须从 getData() 中输出的类型之后方法,调用这样的东西来获取嵌套对象
SpecificNestedBean bean = AutoBeanCodex.decode(factory, 
SpecificNestedBean.class,
env.getData()).as();
Envelope type 和嵌套类型(在上面的 factory 中)甚至不需要相同 AutoBeanFactory类型。这可以让您从通用传输实例中抽象出信封的读/写,并为每个 dataType 使用特定的工厂。 string 属性来解码数据的模型(和嵌套模型)。

关于json - 在 GWT 上使用 AutoBean 解析未知类型的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234601/

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