相关疑难解决方法(0)

避免在复杂json创建的hashmap中嵌套

我有一个hashmap,它具有String和object的键值对.这是json以下的转换.

{
    "test1": {
        "test2": {
            "test3": {
                "key": "value"
            },
            "somefields12": "some value2"
        },
        "somefields": "some value"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有转换为地图.我只有那张地图.如果这可能有关键和值,我必须根据该值编写一些逻辑.我实现如下:

    if (map.containsKey("test1") ) {
        final HashMap<String, Object> test1 = (HashMap<String, Object>) map.get("test1");
        if (test1.containsKey("test2")) {
            final List<Object> test2 = (List<Object>) test1.get("test2");
            if (!test2.isEmpty()) {
                final HashMap<String, Object> test3 = (HashMap<String, Object>) test2.get(0);
                if (test3.containsKey("key")) {
                    final String value = String.valueOf(test2.get("key"));
                    if (!StringUtils.isBlank(value)) {
                        //do some work based on value
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,我想避免从我的代码中嵌套if(多个ifs).最好的方法是什么?

java java-8

7
推荐指数
1
解决办法
120
查看次数

Java的"键值编码"

在Apple上的Objective-C中,有一种称为"键值编码"的东西,它允许您使用类似于文件系统路径的字符串遍历对象图.有一个非正式的协议(即接口),允许对象根据他们要求的"密钥"返回值.例如,默认是返回由键命名的字段的值,而像NSDictionaries这样的关系集合可以实现更有趣的行为.

伪代码示例:

foo.bar = new baz();
foo.bar.mymap = new map();
foo.bar.mymap['bom'] = 2;

foo.valueForKeyPath("bar.mymap.bom") # 2

Java有这样的东西吗?这很容易实现,但我想我先看看.

java key-value-coding

6
推荐指数
1
解决办法
3341
查看次数

如何访问地图中嵌套地图中的项目(Java)

编辑:我已经尝试了建议的打印,但它给了我语法错误.无法解决.get任何人都知道修复?

截图:http://imgur.com/hoif6VL

问题:我有这张Java地图Map<String, Object> TestMap = new HashMap<String, Object>().在其对象值内是另一个地图Map<String, Integer> NestedTestMap.

我已String song存储为第一个地图的字符串键,我将第二个地图存储为String song对象值.在第二个映射中,我String Championships将其存储为其字符串键,并Integer 113存储为其对象值.

问题:如何访问整数?我将以某种方式访问​​第一个地图的字符串以到达第二个地图,并获得第二个地图的字符串的整数.是的相当复杂哈哈.

额外奖励:我如何将此作为断言声明?这不适合我:assert (Map<String, Object>)(TestMap.get("song")).get(("Championships").equals(113))

当我没有嵌套地图时,这样的东西对我来说很好: assert ParsedMap.get("song").equals("kanye")

java string dictionary hashmap

0
推荐指数
1
解决办法
447
查看次数

标签 统计

java ×3

dictionary ×1

hashmap ×1

java-8 ×1

key-value-coding ×1

string ×1