gpt4 book ai didi

java - 如何使用 GWT Autobeans 处理动态 JSON 数据?

转载 作者:行者123 更新时间:2023-11-29 09:15:43 26 4
gpt4 key购买 nike

目前我有一个类设置要作为 autobean 处理:

public interface Asset extends Hit {
String getGuid();
String getHitType();
Map<String,Serializable> getMetadata();
}

我尝试使用 Object 而不是 Serializable:

Map<String,Object>  getMetadata()

但这在尝试访问数据时似乎会爆炸(因为它没有“具体化”)。

元数据映射可能包含其他映射、字符串、整数等。如何从该元数据对象的内部映射中检索数据?

目前,如果我调用 asset.getMetadata().get("title");这将返回一个 SerializableAutoBean 并对该对象执行 toString() 或 String.valueOf(obj) 返回内存中的对象信息而不是实际的字符串值。

AutoBean 对象可以是动态的,还是您必须专门定义每个字段?

最佳答案

AutoBeans 在 Java 泛型或 RTTI 意义上不是“动态的”。

在 GWT 中,对于任何自动生成的内容(包括 AutoBeans),所有类型都必须在编译时已知。这对您的设计施加了限制,不允许您充分利用 Java 的语言特性(特别是泛型和其他 RTTI 特性)。因此,AutoBeans 在 RTTI 或 Java 一般意义上不是动态的。但是,AutoBeans 只是一种包装数据的低级方法,您仍然可以使用 Splittables 访问数据!

如前面的评论所述,您可以对序列化/解码时类型未知的 JSON 对象部分使用 Splittables。当然,让所有事情同时发生会很好,但是没有什么能阻止您对数据对象执行一些后处理以使它们进入您想要的状态。

对于某人“理解”AutoBeans(以及自动生成的任何其他内容)正在发生的事情,一个真正好的方法是查看生成的代码。 maven 的默认位置是:${project.build.directory}/.generated

如果您在编译后查看那里,您应该找到 GWT 编译器为您的 AutoBeans 生成的代码。

关于java - 如何使用 GWT Autobeans 处理动态 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9539908/

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