我想从json对象的这个阵列中获取数据:
[
{
"outgoing_relationships": "http://myserver:7474/db/data/node/4/relationships/out",
"data": {
"family": "3",
"batch": "/var/www/utils/batches/d32740d8-b4ad-49c7-8ec8-0d54fcb7d239.resync",
"name": "rahul",
"command": "add",
"type": "document"
},
"traverse": "http://myserver:7474/db/data/node/4/traverse/{returnType}",
"all_typed_relationships": "http://myserver:7474/db/data/node/4/relationships/all/{-list|&|types}",
"property": "http://myserver:7474/db/data/node/4/properties/{key}",
"self": "http://myserver:7474/db/data/node/4",
"properties": "http://myserver:7474/db/data/node/4/properties",
"outgoing_typed_relationships": "http://myserver:7474/db/data/node/4/relationships/out/{-list|&|types}",
"incoming_relationships": "http://myserver:7474/db/data/node/4/relationships/in",
"extensions": {},
"create_relationship": "http://myserver:7474/db/data/node/4/relationships",
"paged_traverse": "http://myserver:7474/db/data/node/4/paged/traverse/{returnType}{?pageSize,leaseTime}",
"all_relationships": "http://myserver:7474/db/data/node/4/relationships/all",
"incoming_typed_relationships": "http://myserver:7474/db/data/node/4/relationships/in/{-list|&|types}"
}
]
我试过的是:
def messages=[];
for ( i in families) {
messages?.add(i);
}
我如何在消息数组中获取familes.data.name。
这是我试过的:
def messages=[];
for ( i in families) {
def map = new groovy.json.JsonSlurper().parseText(i);
def msg=map*.data.name;
messages?.add(i);
}
return messages;
并收到此错误:
javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: groovy.json.JsonSlurper.parseText() is applicable for argument types: (com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex) values: [v[4]]\nPossible solutions: parseText(java.lang.String), parse(java.io.Reader)
答案 0 :(得分:1)
使用JSON-lib。
GJson.enhanceClasses()
def families = json_string as JSONArray
def messages = families.collect {it.data.name}
答案 1 :(得分:1)
如果您使用的是Groovy 1.8,则不再需要JSON-lib,因为GDK中包含JsonSlurper。
import groovy.json.JsonSlurper
def families = new JsonSlurper().parseText(json_string)
def messages = families.collect { it.data.name }
答案 2 :(得分:1)
或者使用Groovy的原生JSON解析:
def families = new groovy.json.JsonSlurper().parseText( jsonAsString )
def messages = families*.data.name
由于您编辑了问题以向我们提供所需信息,因此您可以尝试:
def messages=[];
families.each { i ->
def map = new groovy.json.JsonSlurper().parseText( i.toString() )
messages.addAll( map*.data.name )
}
messages
虽然应该说toString()
中的com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex
方法无法保证有效JSON ... 您应该使用getProperty( name )
Neo4jVertex
函数1}}而不是依赖toString()
你在做什么来生成第一个文本(你说的是JSON并且没有提到它是如何创建的)