Groovy 获取neo4j对象的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

我想从这个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)
使用


如果您使用的是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