내 항목 목록에서 간단한 JSON 배열을 만들려고합니다. JsonBuilder을 사용하여 훌륭한 샘플을 찾았습니다. 모양은 다음과 같습니다.Groovy JSON 배열 빌더 (닫는 부분에 사용자 정의 멤버 포함)
class Author {
String name
}
def authors = [new Author (name: "Guillaume"),
new Author (name: "Jochen"),
new Author (name: "Paul")]
def json = new groovy.json.JsonBuilder()
json authors, { Author author ->
name author.name
}
하지만 내 JSON에 사용자 지정 속성을 추가해야합니다. 다음과 같이 표시되어야합니다 :
json authors, { Author author ->
def c = author.name.bytes.encodeBase64()
name author.name
code c
}
그러나이 코드는 작동하지 않으므로 JSON 멤버와 클로저 멤버를 분리해야합니다. 솔직히, 나는 그루비에 대해 큰 전문가가 아니며 그 대답은 조금 단순 할 수 있다고 생각한다. 내가 폐쇄에이를 구현하려면,
def json = new groovy.json.JsonBuilder(authors)
을하지만 :
또한, 나는 내 항목의 사용자 지정 목록을 작성하고 다음 방법으로이 목록을 변환 할 수 있습니다 것을 알고있다.
이import groovy.json.JsonBuilder
def json(items) {
def builder = new JsonBuilder()
builder(items.collect { item ->
[
name: item.name,
code: "${item.name.bytes.encodeBase64()}"
]
})
builder.toString()
}
def authors = [
[ name: "John Doe" ]
]
assert json(authors) == '[{"name":"John Doe","code":"Sm9obiBEb2U="}]'
뱀파이어의 의견이 답입니다. 내 환경에서는 groovy.json.JsonBuilder 클래스를 사용할 수 없습니다. 내가 내 대본을 실행할 수없는 이유가 바로 그 때문이다. 나는 그루비를 아주 잘 알지 못한다. 그루비는 나에게 불명확 한 예외를 던지므로 문법 실수를 찾는다. – RredCat