arrays - 如何使用带有 .each 的 groovy jsonbuilder 创建数组?

标签 arrays groovy each jsonbuilder

我想用 JSON-Builder 创建一个数组。

预期格式:

{
  "Header": {
    "SomeKey" : "SomeValue"
 }
  "Data": [
    { 
      "SomeKey" : "SomeValue"
    }, 
    {
     "SomeKey" : "SomeValue"
    }
  ]
}

我的代码:
    def builder = new groovy.json.JsonBuilder()

    def root = builder {
        Header {            
        "Typ" "update"
        "Code" "UTF-8"
        "TransaktionsNr" item.transactionNumber
        "DatumZeit" new Date().format("dd.MM.yyyy HH:mm")
    }

    customers.each ({ customer->           
        "Data" { 
            "Email" customer.code
            "Newsletter" customer.newsletterSubscribed
        }
    })

但是,无论我做什么,我都只能在“数据”部分获得一个元素。我尝试使用 [] 而不是 {},但我仍然只得到一个元素,我做错了什么?

最佳答案

这是 JSON 结构的重复键。 There should not be duplicate key in the same hierarchy or they will override each other :

class Customer { String code; boolean newsletterSubscribed }

customers = [
  new Customer(code:"11111", newsletterSubscribed:true),
  new Customer(code:"22222", newsletterSubscribed:false)
]

def builder = new groovy.json.JsonBuilder()

def root = builder {
  Header {            
    "Typ" "update"
    "Code" "UTF-8"
    "TransaktionsNr" 987
    "DatumZeit" new Date().format("dd.MM.yyyy HH:mm")

  }

  customers customers.collect { customer ->
        ["Email":customer.code, 
        "Newsletter":customer.newsletterSubscribed]
    }

}

assert builder.toString() == {"Header":{"Typ":"update","Code":"UTF-8","TransaktionsNr":987,"DatumZeit":"21.12.2012 13:38"},"Data":{"Email":"22222","Newsletter":false},"customers":[{"Email":"11111","Newsletter":true},{"Email":"22222","Newsletter":false}]}

关于arrays - 如何使用带有 .each 的 groovy jsonbuilder 创建数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992751/

相关文章:

groovy - 给定值,在 map 中查找键

intellij-idea - 如何将变量传递给 Intellij IDEA 实时模板 groovy 脚本中的 groovy 代码?

java - 在数据库中存储 BLOB 的最佳方式是什么?

arrays - 如何使用 iOS Swift 将一组图像存储在 Firebase Storage 中的 1 个路径下

arrays - ZSH for 循环数组变量问题

Javascript函数将每个单词的第一个字母大写

jquery - 如何将不同父项中的重复元素 append 到同一父项中的另一个元素中

javascript - jquery offset() 在 Firefox 12 中的each() 中返回空字符串

javascript - 如何将对象键转换为嵌套对象

JavaScript 对具有相同项目的数组进行排序