如何解决解析动态定义的嵌套映射
我有一个动态定义的 JSON 对象。
{
"lvars": {
"task1": {
"assigned" : true,"params": {//any key value maps here},{//any key value maps}
},"task2": {
"assigned" : false,{//any key value maps}
....
},"mvars": {
"Id": {
"type": "String","value": ""
},}
}
现在在 Java 中,当我将其反序列化为代码时,它变得有点像这样,
Map<String,Map<String,Object>>>>> m = ObjectMapper
.fromJson(getValues(),new TypeReference<>() {});
在这种情况下,“lvars”和“mvars”是固定键,其他的都是可变的。如何避免Java中map声明的嵌套映射。
解决方法
就去做:
Map<String,Object> data = ObjectMapper.fromJson(getValues(),new TypeReference<>() {});
Map<String,Map<String,Object>>> dynamic_map_0 = (Map<String,Object>>>) data.get("lvars");
Map<String,Object>>> dynamic_map_1 = (Map<String,Object>>>) data.get("mvars");
或更简单:
JSONObject obj = new JSONObject(inputAsString);
JSONObject dynamic0 = obj.getJSONObject("lvars");
JSONObject dynamic1 = obj.getJSONObject("mvars");
,
您可以创建一个名为 NestedMap
的类,它是一个包含对其他 NestedMap 对象的引用的数据结构,如下所示:
class NestedMap<K,Object> {
Map<K,NestedMap<K>> data;
Object object; // object to resort to if reached the end of "map-chain"
...
}
这使得嵌套不那么混乱。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。