【发布时间】:2018-01-18 12:43:30
【问题描述】:
输入 json文件:
{
"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{
"value": "New",
"onclick": ["CreateNewDoc()","hai"],
"newnode":"added"
}
]
}
}
}
Groovy 代码:
def newjson = new JsonSlurper().parse(new File ('/tmp/test.json'))
def value=newjson.menu.popup.menuitem.value
def oneclick=newjson.menu.popup.menuitem.onclick
println value
println value.class
println oneclick
println oneclick.class
输出:
[New]
class java.util.ArrayList
[[CreateNewDoc(), hai]]
class java.util.ArrayList
这里,
带有 String 和 List 的 json 节点返回与上面所示的 groovy 代码相同的类名。
如何区分节点
value和oneclick。从逻辑上讲,我希望value应该是instance of String。但两者都返回为ArrayList。如何使用 groovy 获取 json 中节点的确切类型。
更新 1:
我不太清楚,可以如下图所示。我期望得到这个结果,
New
class java.util.String
[CreateNewDoc(), hai]
class java.util.ArrayList
【问题讨论】:
-
它只是一个字符串和一个列表。 JSON 只能处理那些基本类型(以及 object、bool、nil、...)
-
@cfrick 我能得到上面更新 1 中显示的答案吗
-
您正在从列表中获取值。您必须决定,是需要全部还是只需要第一个或最后一个等。