从平面名称-值对生成Java映射树或属性树

从平面名称-值对生成Java映射树或属性树,java,Java,有很多次我想要一个库,提供一些简单的键值属性,创建一个地图树,或列出一个包含地图的地图。。考虑Java JSON和/或在现有映射树上检索和设置值 属性顺序示例很重要: a.b = "b" a.c.d = 1 a.e.f[0] = "blah" 上面的内容将被解析为Map,其中a是Map,c是a中的一个键,值为a的Map包含值为1的d键。。。等等 将其可视化为JSON树的一种方法: { "a" : { "b" : "b", "c" :

有很多次我想要一个库,提供一些简单的键值属性,创建一个地图树,或列出一个包含地图的地图。。考虑Java JSON和/或在现有映射树上检索和设置值

属性顺序示例很重要:

a.b = "b"
a.c.d = 1
a.e.f[0] = "blah"
上面的内容将被解析为Map,其中a是Map,c是a中的一个键,值为a的Map包含值为1的d键。。。等等

将其可视化为JSON树的一种方法:

{ 
    "a" : 
    {
        "b" : "b",
        "c" : 
        {
            "d" : 1
        },
        "e" :
        {
            "f" :
            ["blah"]
        }
    }
}
我曾多次遇到这种情况,需要一种简单的对象路径,如语言和通用表达式语言,因为集合不是自动创建的,所以无法工作

因此,我写了我自己的简单分裂。递归地创建映射,但我希望可能有一个经过良好测试的库,它允许Java对象的操作/创建,而不需要通用或图灵完整表达式语言ie Groovy和EL的开销,这将是一种过分的做法

我知道Spring有一个DataBinder,它可以做一些类似的事情,但它只在POJO上工作,不会在普通地图上工作这是因为它需要知道如何转换数据,这在这里不是问题


下面是另一个例子,有人试图对Jackson做类似的事情:

我假设实际使用JSON或YAML不是一个选项?不是。我基本上是取一个平面表示,展开它,然后将它叠加在层次表示之上。