0

我是函数式编程范式的新手,并希望使用 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)
}

这没有用。收集操作是否应该以这种方式运行?如果是这样,那我该怎么写?

4

2 回答 2

3

尝试

 personsListJson.persons.collect {
     new Person( id:it.id, firstname:it.firstname, lastname:it.lastname )
 }

由于 json 和构造函数参数之间存在 1:1 映射,您可以将其简化为:

 personsListJson.persons.collect {
     new Person( it )
 }

但是我会保留第一种方法,就好像 Json 在其中有一个额外的值(可能超出您的控制)然后第二种方法会中断

于 2013-11-24T21:12:36.837 回答
-1

你可以试试看-

List<JSON> personsListJson = JSON.parse(personJsonText);
persons = personsListJson.collect{
    new Person(id:it.id, firstname:it.firstname, lastname:it.lastname)
}
于 2013-11-25T07:24:50.427 回答