我有一个带有虚线键值对的散列图(未排序),如
person.adress.street=Fakestreet
person.adress.nr=123
person.name=Mike
person.adress.city=Springfield
我想将其转换为有效的json结构,如:
{
"person" : {
"name" : "Mike",
"adress" : {
"street" : "Fakestreet",
"nr" : 123,
"city" : "Springfield"
}
}
}
我有一个图书馆或一些标准的groovy功能,或者我需要手工制作这样的东西吗?
答案 0 :(得分:1)
好吧,实际上并没有像我想的那样用手工制作它。不确定是否有任何缺陷,但对于这种看起来很有效。
-
答案 1 :(得分:1)
您可以使用groovy.util.ConfigSlurper
as per @cfrick's link
或缩短你手工制作的解决方案:
Closure nester
nester = { Map rslt, String key, val ->
String[] keys = key.split( /\./, 2 )
if( !rslt.containsKey( keys[ 0 ] ) ) rslt[ keys[ 0 ] ] = [:]
if( 2 == keys.length ) nester rslt[ keys[ 0 ] ], keys[ 1 ], val
else rslt[ key ] = val
rslt
}
def d = [ 'person.name':'Mike', 'person.adress.street':'Fakestreet', 'person.adress.nr':123, 'person.adress.city':'Springfield', 'aaa':'bbb' ]
def tree = d.inject [:], nester.trampoline()
assert '{"person":{"name":"Mike","adress":{"street":"Fakestreet","nr":123,"city":"Springfield"}},"aaa":"bbb"}' == JsonOutput.toJson( tree )