Groovy 获取neo4j对象的JSON表示
我想从这个json对象数组中获取数据:Groovy 获取neo4j对象的JSON表示,groovy,neo4j,Groovy,Neo4j,我想从这个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.resy
[
{
"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)
使用
如果您使用的是Groovy 1.8,那么就不再需要JSON库,因为GDK中包含了一个JSON库
import groovy.json.JsonSlurper
def families = new JsonSlurper().parseText(json_string)
def messages = families.collect { it.data.name }
或者使用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
虽然应该说com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex
中的toString()
方法不能保证是有效的JSON您可能应该使用Neo4jVertex
的getProperty(name)
函数,而不是依赖toString()
您是如何生成第一位文本的(您声明为JSON,但没有提到它是如何创建的)JSON_字符串如何与JSONArray一样?您是如何定义族的?显然,这不是一个包含JSON的字符串。好吧,你真正想要的是将neo4j图形转换为JSON字符串,对吗?是的,我想是的,我得到了blueprints results=autoIndex.get(“国家”,“白俄罗斯”);函数,我想从这个输入中获取数据,解析器处理的是字符串,而不是Neo4jVertex。尝试将包含JSON内容的字符串传递给他们。因为您的数组不是JSON!这是一个字符串数组,这些字符串不是JSON。@RahulMehta是的,现在您已经把重要信息放在了问题中,您可以看到顶部的东西是
toString()
表示com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex
对象。。。try:parseText(i.toString())
我在尝试后出现此错误。toString()javax.script.ScriptException:groovy.json.jsoneException:Lexing在第1行第1列失败,在读取“v”时,无法识别可能的有效json值或标点。@RahulMehta,除非您回答您在问题中发布的“json”是如何获得的,这周我的水晶球在修理工那里,我没有什么可以帮忙的了。你看到我关于使用getProperty
而不是这一轮方法的评论了吗?这可能是正确的,但这实际上取决于您如何获得JSON文本。。。
def messages=[];
families.each { i ->
def map = new groovy.json.JsonSlurper().parseText( i.toString() )
messages.addAll( map*.data.name )
}
messages