得到你的neo4j对象的这个JSON表示

时间:2011-11-17 08:13:35

标签: 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.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)

3 个答案:

答案 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并且没有提到它是如何创建的)