簡體   English   中英

在groovy收集封閉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM