[英]Collect closure in groovy
我是函數式編程范例的新手,希望使用groovy來學習這些概念。 我有一個json文本,其中包含幾個人物對象的列表,如下所示:
{
"persons":[
{
"id":1234,
"lastname":"Smith",
"firstname":"John"
},
{
"id":1235,
"lastname":"Lee",
"firstname":"Tommy"
}
]
}
我想要做的是將它們存儲在Person groovy類的列表或數組中,如下所示:
class Person {
def id
String lastname
String firstname
}
我想用一個閉包來做這件事。 我嘗試過類似的東西:
def personsListJson= new JsonSlurper().parseText(personJsonText) //personJsonText is raw json string
persons = personsListJson.collect{
new Person(
id:it.id, firstname:it.firstname, lastname:it.lastname)
}
這沒用。 收集操作是否應該以這種方式運行? 如果是,那我該怎么寫呢?
嘗試
personsListJson.persons.collect {
new Person( id:it.id, firstname:it.firstname, lastname:it.lastname )
}
由於json和構造函數參數之間存在1:1映射,因此可以將其簡化為:
personsListJson.persons.collect {
new Person( it )
}
但是我會保留第一種方法,好像Json有一個額外的值(可能超出你的控制)然后第二種方法會破壞
你可以試試-
List<JSON> personsListJson = JSON.parse(personJsonText);
persons = personsListJson.collect{
new Person(id:it.id, firstname:it.firstname, lastname:it.lastname)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.