Java 如何传入未知结构/类型的映射

Java 如何传入未知结构/类型的映射,java,json,Java,Json,我想有一些地图,其中包含 <String, String> <String, Map<String, String>> <String, Map<String, String[]>> 感觉有点…不对,有什么意见吗 编辑:我有一个映射,用于作为JavaBean处理的每种类型的json结构 class JAVABEAN{ Map<String, String[]> structure1; Map<St

我想有一些地图,其中包含

<String, String> 
<String, Map<String, String>> 
<String, Map<String, String[]>>
感觉有点…不对,有什么意见吗

编辑:我有一个映射,用于作为JavaBean处理的每种类型的json结构

class JAVABEAN{
    Map<String, String[]> structure1;
    Map<String, Map<String, String>> structure2;
    Map<String, ?> anyStructure;
}
有时根本不使用任何结构,但始终至少有1个结构1或结构2


EDIT2:这是一个从rest服务调用的服务,该服务当前处理json。我接受了通过jersey转换为java的json,我相信json对于这种转换必须很简单(没有接口),这就是为什么我使用Map而不是像RangeQuery这样的东西,它将有一个String和String[]成员。

好的,我看到了你的问题只需使用JSON库。格森或杰克逊。使用JSON对象将其结合在一起,而不是试图将JSON拆分成表面上的Java等价物,
Map您必须使用
Map
instanceof
,但这可能是一个糟糕的设计。也许如果您告诉我们您试图解决的问题,我们可以建议一种更好的方法。如果您的值没有任何公共接口,并且它们唯一的共同祖先是Object,那么您所能做的就是使用
映射和
实例。您可能应该将这些值封装在一些共享一个公共接口的适配器类中。为什么要将这些不同类型的映射存储在同一位置?你能用这些不同类型的数据做什么?听起来这些类应该以不同的方式存储和处理。您是否考虑过创建使用JAXB注释的类,并专门创建这些类来处理数据可能出现的不同形式?这样,如果JSON数据解组为特定类型,您可以直接将您的特殊行为嵌入到该类中,而不是根据数据的结构进行计算。然后,听起来您应该有一个
Query
接口,该接口具有多个实现,一个用于范围查询,一个用于in查询,这将是处理类似问题的正确方法。谢谢你的想法,但我的问题还有更多,我不能说所有的事情,因为它与工作相关,但我的java实现有一个很好的理由。我可以有多个结构使用相同的数据结构,但不同的查询。Map可以用于2个不同的查询,最简单的方法就是让前端知道将它放在哪个javascript对象下。我想也许我错了,我可以让我的bean使用接口,我必须检查它out@CatznDogz不要重复使用那些不可重复使用的东西。@CatznDogz但你来这里是因为你发现设计实际上很难使用。我决定我可以使用界面而不是地图,当我刚刚测试让jersey自动转换时,它正在工作,谢谢大家
values.get(0) instanceof String[]
class JAVABEAN{
    Map<String, String[]> structure1;
    Map<String, Map<String, String>> structure2;
    Map<String, ?> anyStructure;
}
for(each item in javabean)
    if structure1, call method1..
    if structure2, call method2..
    if anyStructure, call method1 or method2