2013-11-24 94 views
0

我是功能編程範式的新手,希望能夠使用groovy學習概念。我有一個包含幾個人對象的列表就像一個JSON文本如下:在groovy收集關閉

{ 
    "persons":[ 
    { 
    "id":1234, 
    "lastname":"Smith", 
    "firstname":"John" 
    }, 
    { 
    "id":1235, 
    "lastname":"Lee", 
    "firstname":"Tommy" 
    } 
    ] 
} 

我所試圖做它們存儲在列表或個人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) 
} 

這沒有奏效。收集操作是否應該這樣做?如果是這樣,那我該怎麼寫呢?

回答

3

嘗試

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

而且因爲有一個1:JSON和構造函數的參數之間的一對一映射,您可以簡化到:

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

但我會保持第一種方法,就好像Json得到了額外的價值(可能超出了你的控制範圍),那麼第二種方法就會中斷

+0

對不起,我當時很蠢。在發佈問題之前應該仔細研究一下。非常感謝你的幫助。 – Lee

+0

@Lee不用擔心!很高興我能幫上忙 :-) –

-1

你可以試試看 -

List<JSON> personsListJson = JSON.parse(personJsonText); 
persons = personsListJson.collect{ 
    new Person(id:it.id, firstname:it.firstname, lastname:it.lastname) 
}