由 JsonBuilder() 在 Groovy 中为 Json 构建的对象中的对象
object in object for Json built by JsonBuilder() in Groovy
我的 Groovy 是 2.4.0
我的代码:
def builder2 = new JsonBuilder()
builder2.book {
isbn '0321774094'
title 'Scala for the Impatient'
author (['Cay S. Horstmann', 'Hellen'])
publisher 'Addison-Wesley Professional'
content99 {
contentType '1'
text 'Hello'
}
}
println(builder2.toPrettyString())
println(builder2.content)
println(builder2.content99)
println(builder2.book)
结果如下:
{
"book": {
"isbn": "0321774094",
"title": "Scala for the Impatient",
"author": [
"Cay S. Horstmann",
"Hellen"
],
"publisher": "Addison-Wesley Professional",
"content99": {
"contentType": "1",
"text": "Hello"
}
}
}
[book:[isbn:0321774094, title:Scala for the Impatient, author:[Cay S. Horstmann, Hellen], publisher:Addison-Wesley Professional, content99:TestJson$_testJson_closure1$_closure2@38ee79e5]]
Exception in thread "main" groovy.lang.MissingPropertyException: No such property: content99 for class: groovy.json.JsonBuilder
Groovy.lang.MissingPropertyException: No such property: book for class: groovy.json.JsonBuilder
我的问题是:
- 为什么我printlnbuilder2.content时content99的内容不显示(只显示class的东西)?
当我打印 builder2.content99 时,Groovy 告诉我:
groovy.lang.MissingPropertyException: 没有这样的 属性: class 的 content99: groovy.json.JsonBuilder
即使我尝试打印 builder2.book,Groovy 仍然告诉我同样的错误:
groovy.lang.MissingPropertyException:没有 属性:class 的书:groovy.json.JsonBuilder
如何读取 Json 对象中的 属性?
谢谢。
因为这个method。由于 getContent()
是为 JsonBuilder
定义的,因此可以调用 content
。没有 getContent99()
方法,也没有 属性。您不匹配 JsonSlurper
与 JsonBuilder
。使用 JsonBuilder
不可能以这种方式引用字段。
见1.
为了引用字段,您需要再次解析构建的文档:
import groovy.json.*
def builder2 = new JsonBuilder()
builder2.book {
isbn '0321774094'
title 'Scala for the Impatient'
author (['Cay S. Horstmann', 'Hellen'])
publisher 'Addison-Wesley Professional'
content99 {
contentType '1'
text 'Hello'
}
}
def pretty = builder2.toPrettyString()
println(pretty)
println(builder2.content)
def slurped = new JsonSlurper().parseText(pretty)
println(slurped.book.content99)
println(slurped.book)
我的 Groovy 是 2.4.0
我的代码:
def builder2 = new JsonBuilder()
builder2.book {
isbn '0321774094'
title 'Scala for the Impatient'
author (['Cay S. Horstmann', 'Hellen'])
publisher 'Addison-Wesley Professional'
content99 {
contentType '1'
text 'Hello'
}
}
println(builder2.toPrettyString())
println(builder2.content)
println(builder2.content99)
println(builder2.book)
结果如下:
{
"book": {
"isbn": "0321774094",
"title": "Scala for the Impatient",
"author": [
"Cay S. Horstmann",
"Hellen"
],
"publisher": "Addison-Wesley Professional",
"content99": {
"contentType": "1",
"text": "Hello"
}
}
}
[book:[isbn:0321774094, title:Scala for the Impatient, author:[Cay S. Horstmann, Hellen], publisher:Addison-Wesley Professional, content99:TestJson$_testJson_closure1$_closure2@38ee79e5]]
Exception in thread "main" groovy.lang.MissingPropertyException: No such property: content99 for class: groovy.json.JsonBuilder
Groovy.lang.MissingPropertyException: No such property: book for class: groovy.json.JsonBuilder
我的问题是:
- 为什么我printlnbuilder2.content时content99的内容不显示(只显示class的东西)?
当我打印 builder2.content99 时,Groovy 告诉我:
groovy.lang.MissingPropertyException: 没有这样的 属性: class 的 content99: groovy.json.JsonBuilder
即使我尝试打印 builder2.book,Groovy 仍然告诉我同样的错误:
groovy.lang.MissingPropertyException:没有 属性:class 的书:groovy.json.JsonBuilder
如何读取 Json 对象中的 属性?
谢谢。
因为这个method。由于
getContent()
是为JsonBuilder
定义的,因此可以调用content
。没有getContent99()
方法,也没有 属性。您不匹配JsonSlurper
与JsonBuilder
。使用JsonBuilder
不可能以这种方式引用字段。见1.
为了引用字段,您需要再次解析构建的文档:
import groovy.json.* def builder2 = new JsonBuilder() builder2.book { isbn '0321774094' title 'Scala for the Impatient' author (['Cay S. Horstmann', 'Hellen']) publisher 'Addison-Wesley Professional' content99 { contentType '1' text 'Hello' } } def pretty = builder2.toPrettyString() println(pretty) println(builder2.content) def slurped = new JsonSlurper().parseText(pretty) println(slurped.book.content99) println(slurped.book)