如何在Groovy中处理动态JSON元素

时间:2013-02-19 19:09:41

标签: java grails groovy

我的JSON看起来与此类似:

  

{ “测试”:{ “红色”: “上”, “绿色”: “关”, “黄”: “上”}, “测试1”:{ “红色”: “关”, “绿色” : “上”, “黄色”: “关”}, “TEST2”:{ “红色”: “上”, “绿色”: “关”, “黄色”: “关”}}

我用下面的代码迭代了这个:

    JSONObject t = JSON.parse(params.myObject)

    t.each { id, data ->
        println id
        println data.red
        println data.green
        println data.yellow
    }

但是,有时我可以在JSON对象中拥有动态不同的值。例如(添加了新颜色):

{ “测试”:{ “红色”: “上”, “绿色”: “关”, “黄”: “上”, “粉红色”: “上”}, “测试1”:{ “红” : “关”, “绿色”: “上”, “黄”: “关”, “粉红色”: “上”}, “测试2”:{ “红”: “上”, “绿色”: “关” , “黄色”: “关”, “粉红色”: “上”}}

问题

有没有办法迭代所有的json而不用硬编码我的代码中的颜色?

2 个答案:

答案 0 :(得分:3)

JSONObject t = JSON.parse(params.myObject)
t.each { id, data ->
    println id
    data.each { prop, value ->
       println prop + " = " + value
    }
}

答案 1 :(得分:0)

我明白了。

我可以简单地以类似的方式迭代值:

    t.each { id, data ->
        println id
        data.each {id1, d ->
            println id1
            println  d
        }
    }