如何传入未知结构/类型的地图

时间:2015-02-09 20:10:30

标签: java json

我想要一些包含

的Map
<String, String> 
<String, Map<String, String>> 
<String, Map<String, String[]>>

到目前为止,我有以下内容:

Map<String, ?> any = new HashMap<String, ?>();

当我检索值时,我想要执行类似值instanceof String []的操作,但这不起作用,因为在运行时删除了泛型。我处理随机结构的方式不正确吗?

有哪些可行的选择。我目前正在尝试做类似的事情。

values.get(0) instanceof String[]

感觉有点......错了,有什么输入?

编辑:我有一个我希望作为java bean处理的每种类型的json结构的映射

class JAVABEAN{
    Map<String, String[]> structure1;
    Map<String, Map<String, String>> structure2;
    Map<String, ?> anyStructure;
}

anyStructure可以包含structure1或structure2,它包含任何组合(我的实际项目中有2个以上的结构)。

根据项目所在的地图,我调用了不同的方法来处理数据..

for(each item in javabean)
    if structure1, call method1..
    if structure2, call method2..
    if anyStructure, call method1 or method2

有时任何结构都不会被使用,但总会有至少1个structure1或structure2

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

1 个答案:

答案 0 :(得分:4)

好的,我看到了你的问题。 只需使用JSON库。 Gson或Jackson。使用JSON对象将它们保持在一起,而不是试图将JSON分解为表面上的Java等价物,Map<String, Map<String, String[]>[]和这种复杂的废话。