【问题标题】:Groovy: Convert Array to JSonGroovy:将数组转换为 JSON
【发布时间】:2012-05-24 14:09:33
【问题描述】:

我是 Groovy 的新手,无法将数组转换为 JSON。计算的 JSON 应该包含我的数组列表中的所有值,但它只存储最后一个值。代码如下:

def arraylist = [["0",2],["1",8],["2",6],["3",8],["4",3]]

def arraysize = arraylist.size()

def builder = new groovy.json.JsonBuilder()
 builder ({
       cols([
                {
                    "id" "hours"
                    "label" "Hours"
                    "type" "string"
                },
                {
                    "id" "visitor"
                    "label" "Visitors"
                    "type" "number"
                }
           ])

         rows([
                {
                        for( i in 0..< arraysize )
                        {
                        c([
                             {
                                 "v" arraylist[i][0]
                             },
                             {
                                 "v" arraylist[i][1]
                             }
                         ])
                        }//for

                }
           ])
})

println builder.toPrettyString()

可以尝试在此处运行代码: http://groovyconsole.appspot.com/

预期输出在这里:

{
"cols": [
    {
        "id": "hours",
        "label": "Hours",
        "type": "string"
    },
    {
        "id": "visitor",
        "label": "Visitors",
        "type": "number"
    }
],
"rows": [
    {
        "c": [
            {
                "v": "0"
            },
            {
                "v": 2
            }
        ]
    },
    {
        "c": [
            {
                "v": "1"
            },
            {
                "v": 8
            }
        ]
    },
    {
        "c": [
            {
                "v": "2"
            },
            {
                "v": 6
            }
        ]
    },
    {
        "c": [
            {
                "v": "3"
            },
            {
                "v": 8
            }
        ]
    },
    {
        "c": [
            {
                "v": "4"
            },
            {
                "v": 3
            }
        ]
    }
]
}

【问题讨论】:

  • 您是否在控制器中尝试过render arraylist as JSON?这是一些example
  • 您能举一个您期望的输出示例吗?您的代码令人困惑...
  • 已编辑问题 - @tim_yates
  • @will 谢谢... 发布了一个可能的解决方案,如果需要解释,请告诉我:-)
  • 感谢蒂姆...太棒了!为我节省了一天!抱歉回复晚了:)

标签: json grails groovy


【解决方案1】:

这样的事情似乎给出了你想要的结果:

def arraylist = [["0",2],["1",8],["2",6],["3",8],["4",3]]

def builder = new groovy.json.JsonBuilder()
builder {
  cols( [
    [ id: "hours",   label: "Hours",    type: "string" ],
    [ id: "visitor", label: "Visitors", type: "number" ] ] )

  rows( arraylist.collect { pair -> [ c: pair.collect { item -> [ v: item ] } ] } )
}

println builder.toPrettyString()

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 2022-01-11
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多