Groovy 简单的 JSON 数组构建器 [英] Groovy Simple JSON array builder

查看:18
本文介绍了Groovy 简单的 JSON 数组构建器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在 JSON 中构建一个简单的 JSON 数组,但在循环中它会在每次迭代期间覆盖第一个值.

def jsonBuilder = new groovy.json.JsonBuilder()联系.每个{jsonBuilder.contact(名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle(),)}

它只返回简单的 JSON 并覆盖每次迭代的值并只保留最后一个.在groovy中构造JSON数组的语法是什么?

解决方案

技巧是从联系人列表中收集.假设contract列表的结构如下,按照下面jsonBuilder的使用方式

def 联系 = [[ getFirstName : { 'A' }, getLastName : { 'B' }, getTitle : { 'C' } ],[ getFirstName : { 'D' }, getLastName : { 'E' }, getTitle : { 'F' } ],[ getFirstName : { 'G' }, getLastName : { 'H' }, getTitle : { 'I' } ]]def jsonBuilder = new groovy.json.JsonBuilder()jsonBuilder {联系人 contact.collect {[名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle()]}}println jsonBuilder.toPrettyString()//印刷{联系人":[{"名字": "A","姓氏": "B",标题":C"},{"名字": "D","LastName": "E",标题":F"},{"名字": "G","LastName": "H",标题":我"}]}

如果您正在寻找 JSONArray 而不是 JSONObject 作为最终结构,请使用:

jsonBuilder(联系.收集{[名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle()]})//操作[{"名字": "A","姓氏": "B",标题":C"},{"名字": "D","LastName": "E",标题":F"},{"名字": "G","LastName": "H",标题":我"}]

没有意义,但如果需要如下结构

<预><代码>[{接触": {"名字": "A","姓氏": "B",标题":C"}},{接触": {"名字": "D","LastName": "E",标题":F"}},{接触": {"名字": "G","LastName": "H",标题":我"}}]

然后使用

jsonBuilder(联系.收集{[接触 : [名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle()]]})

I need to build a simple JSON array in JSON but in the loop it overwrites the first value during every iteration.

def jsonBuilder = new groovy.json.JsonBuilder()
contact.each {
            jsonBuilder.contact(
                    FirstName:  it.getFirstName(),
                    LastName:  it.getLastName(),
                    Title: it.getTitle(),       
            )
    }

It returns just the simple JSON and overwrites the value of every iteration and retains just the last one. What is the syntax for constructing a JSON Array in groovy?

解决方案

Trick is to collect from the list of contacts. Assuming structure of contract list is as below, follow the way jsonBuilder is used below.

def contact = [ 
    [ getFirstName : { 'A' }, getLastName : { 'B' }, getTitle : { 'C' } ], 
    [ getFirstName : { 'D' }, getLastName : { 'E' }, getTitle : { 'F' } ], 
    [ getFirstName : { 'G' }, getLastName : { 'H' }, getTitle : { 'I' } ]     
]

def jsonBuilder = new groovy.json.JsonBuilder()

jsonBuilder {
    contacts contact.collect { 
        [ 
            FirstName: it.getFirstName(), 
            LastName: it.getLastName(), 
            Title: it.getTitle() 
        ] 
    }
}

println jsonBuilder.toPrettyString()


// Prints
{
    "contacts": [
        {
            "FirstName": "A",
            "LastName": "B",
            "Title": "C"
        },
        {
            "FirstName": "D",
            "LastName": "E",
            "Title": "F"
        },
        {
            "FirstName": "G",
            "LastName": "H",
            "Title": "I"
        }
    ]
}

If you are looking for a JSONArray instead of a JSONObject as a final stucture, then use:

jsonBuilder(
    contact.collect { 
        [ 
            FirstName: it.getFirstName(), 
            LastName: it.getLastName(), 
            Title: it.getTitle() 
        ]
    }
)

// OP
[
    {
        "FirstName": "A",
        "LastName": "B",
        "Title": "C"
    },
    {
        "FirstName": "D",
        "LastName": "E",
        "Title": "F"
    },
    {
        "FirstName": "G",
        "LastName": "H",
        "Title": "I"
    }
]

It does not make sense but if structure needed like below

[
    {
        "contact": {
            "FirstName": "A",
            "LastName": "B",
            "Title": "C"
        }
    },
    {
        "contact": {
            "FirstName": "D",
            "LastName": "E",
            "Title": "F"
        }
    },
    {
        "contact": {
            "FirstName": "G",
            "LastName": "H",
            "Title": "I"
        }
    }
]

then use

jsonBuilder(
    contact.collect { 
        [ 
            contact : [ 
                FirstName: it.getFirstName(), 
                LastName: it.getLastName(), 
                Title: it.getTitle() 
            ] 
        ]
    }
)

这篇关于Groovy 简单的 JSON 数组构建器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆