首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JsonBuilder对象数组

JsonBuilder对象数组
EN

Stack Overflow用户
提问于 2015-03-10 20:45:42
回答 1查看 3.6K关注 0票数 1

我有一个JsonBuilder,我有一些麻烦。我希望输出结果如下所示:

代码语言:javascript
复制
"unitTests": {
        "testType": "TestNG",
        "totalTests": 20,
        "failedTests": 2,
        "skippedTests": 0,
        "failedTestList": [
            {
                "class": "SomeTestClass"
                "method": "someTestMethod"
            },
            {
                "class": "AnotherTestClass"
                "method": "anotherTestMethod"
            }
        ]
    }

相反,我看到的是:

代码语言:javascript
复制
"unitTests": {
        "testType": "TestNG",
        "totalTests": 20,
        "failedTests": 2,
        "skippedTests": 0,
        "failedTestList": [
            [
                {
                    "class": "SomeTestClass"
                }
            ],
            [
                {
                    "method": "someTestMethod"
                }
            ],
            [
                {
                    "class": "AnotherTestClass"
                }
            ],
            [
                {
                    "method": "anotherTestMethod"
                }
            ]
        ]
    }

生成JSON文档的代码如下:

代码语言:javascript
复制
def json = new JsonBuilder()

    def root = json {
        time { $date timestamp }
        data {
            unitTests {
                testType unitType
                totalTests totalUnitTests
                failedTests failedUnitTests
                skippedTests skippedUnitTests
                failedTestList(failedUnitTestClass.collect {[class: it]}, failedUnitTestMethod.collect {[method: it]})
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 20:52:37

需要同时迭代两个列表。尝试:

代码语言:javascript
复制
[failedUnitTestClass, failedUnitTestMethod].transpose().collect { [class:it[0], method:it[1]] }

完整的例子:

代码语言:javascript
复制
import groovy.json.*

def json = new JsonBuilder()
def failedUnitTestClass = ['cls1', 'cls2', ]
def failedUnitTestMethod = ['m1', 'm2', ]

json.unitTests {
    failedTestList([failedUnitTestClass, failedUnitTestMethod].transpose().collect {[class:it[0], method:it[1]]})
}
println JsonOutput.prettyPrint(json.toString())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28973752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档