2015-05-21 56 views
0

我正在使用Neo4J 2.2.2版本。从Neo4J反序列化Json 2.2.2

当Neo4jClient尝试反序列化JSON如下(模式投影),我们收到以下消息:

的Neo4j返回一个有效的响应,但是Neo4jClient无法反序列化为您提供的对象结构。 首先,请尝试查看下面的例外情况以确定发生了什么。 包含此异常的全文,包括此消息,堆栈跟踪以及所有内部异常详细信息。 包含VB $ AnonymousType_0`2 [[Person,App_Code.tynn6afz,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null],[Movie,App_Code.tynn6afz,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null]]。

包含此生JSON,与任何敏感值替换非敏感当量:

{ 
    "columns": [ 
     "person", 
     "movie" 
    ], 
    "data": [ 
     [ 
      { 
       "outgoing_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/out", 
       "labels": "http://sjkdv37:7474/db/data/node/324/labels", 
       "data": { 
        "born": 1956, 
        "name": "Tom Hanks" 
       }, 
       "all_typed_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/all/{-list|&|types}", 
       "traverse": "http://sjkdv37:7474/db/data/node/324/traverse/{returnType}", 
       "self": "http://sjkdv37:7474/db/data/node/324", 
       "property": "http://sjkdv37:7474/db/data/node/324/properties/{key}", 
       "properties": "http://sjkdv37:7474/db/data/node/324/properties", 
       "outgoing_typed_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/out/{-list|&|types}", 
       "incoming_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/in", 
       "extensions": {}, 
       "create_relationship": "http://sjkdv37:7474/db/data/node/324/relationships", 
       "paged_traverse": "http://sjkdv37:7474/db/data/node/324/paged/traverse/{returnType}{?pageSize,leaseTime}", 
       "all_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/all", 
       "incoming_typed_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/in/{-list|&|types}", 
       "metadata": { 
        "id": 324, 
        "labels": [ 
         "Person" 
        ] 
       } 
      }, 
      { 
       "outgoing_relationships": "http://sjkdv37:7474/db/data/node/364/relationships/out", 
       "labels": "http://sjkdv37:7474/db/data/node/364/labels", 
       "data": { 
        "released": 2006, 
        "title": "The Da Vinci Code", 
        "tagline": "Break The Codes" 
       }, 
       "all_typed_relationships": "http://sjkdv37:7474/db/data/node/364/relationships/all/{-list|&|types}", 
       "traverse": "http://sjkdv37:7474/db/data/node/364/traverse/{returnType}", 
       "self": "http://sjkdv37:7474/db/data/node/364", 
       "property": "http://sjkdv37:7474/db/data/node/364/properties/{key}", 
       "properties": "http://sjkdv37:7474/db/data/node/364/properties", 
       "outgoing_typed_relationships": "http://sjkdv37:7474/db/data/node/364/relationships/out/{-list|&|types}", 
       "incoming_relationships": "http://sjkdv37:7474/db/data/node/364/relationships/in", 
       "extensions": {}, 
       "create_relationship": "http://sjkdv37:7474/db/data/node/364/relationships", 
       "paged_traverse": "http://sjkdv37:7474/db/data/node/364/paged/traverse/{returnType}{?pageSize,leaseTime}", 
       "all_relationships": "http://sjkdv37:7474/db/data/node/364/relationships/all", 
       "incoming_typed_relationships": "http://sjkdv37:7474/db/data/node/364/relationships/in/{-list|&|types}", 
       "metadata": { 
        "id": 364, 
        "labels": [ 
         "Movie" 
        ] 
       } 
      } 
     ], 
     [ 
      { 
       "outgoing_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/out", 
       "labels": "http://sjkdv37:7474/db/data/node/324/labels", 
       "data": { 
        "born": 1956, 
        "name": "Tom Hanks" 
       }, 
       "all_typed_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/all/{-list|&|types}", 
       "traverse": "http://sjkdv37:7474/db/data/node/324/traverse/{returnType}", 
       "self": "http://sjkdv37:7474/db/data/node/324", 
       "property": "http://sjkdv37:7474/db/data/node/324/properties/{key}", 
       "properties": "http://sjkdv37:7474/db/data/node/324/properties", 
       "outgoing_typed_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/out/{-list|&|types}", 
       "incoming_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/in", 
       "extensions": {}, 
       "create_relationship": "http://sjkdv37:7474/db/data/node/324/relationships", 
       "paged_traverse": "http://sjkdv37:7474/db/data/node/324/paged/traverse/{returnType}{?pageSize,leaseTime}", 
       "all_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/all", 
       "incoming_typed_relationships": "http://sjkdv37:7474/db/data/node/324/relationships/in/{-list|&|types}", 
       "metadata": { 
        "id": 324, 
        "labels": [ 
         "Person" 
        ] 
       } 
      }, 
      { 
       "outgoing_relationships": "http://sjkdv37:7474/db/data/node/414/relationships/out", 
       "labels": "http://sjkdv37:7474/db/data/node/414/labels", 
       "data": { 
        "released": 2004, 
        "title": "The Polar Express", 
        "tagline": "This Holiday Season… Believe" 
       }, 
       "all_typed_relationships": "http://sjkdv37:7474/db/data/node/414/relationships/all/{-list|&|types}", 
       "traverse": "http://sjkdv37:7474/db/data/node/414/traverse/{returnType}", 
       "self": "http://sjkdv37:7474/db/data/node/414", 
       "property": "http://sjkdv37:7474/db/data/node/414/properties/{key}", 
       "properties": "http://sjkdv37:7474/db/data/node/414/properties", 
       "outgoing_typed_relationships": "http://sjkdv37:7474/db/data/node/414/relationships/out/{-list|&|types}", 
       "incoming_relationships": "http://sjkdv37:7474/db/data/node/414/relationships/in", 
       "extensions": {}, 
       "create_relationship": "http://sjkdv37:7474/db/data/node/414/relationships", 
       "paged_traverse": "http://sjkdv37:7474/db/data/node/414/paged/traverse/{returnType}{?pageSize,leaseTime}", 
       "all_relationships": "http://sjkdv37:7474/db/data/node/414/relationships/all", 
       "incoming_typed_relationships": "http://sjkdv37:7474/db/data/node/414/relationships/in/{-list|&|types}", 
       "metadata": { 
        "id": 414, 
        "labels": [ 
         "Movie" 
        ] 
       } 
      } 
     ] 
    ] 
} 

编辑

我包括VB代码,但是我觉得这错误是由Neo4jClient生成的。

也许错误是围绕ParseInProjectionMode功能在CypherJsonDeserializer.cs

Dim user As String = "neo4j" 
Dim pwd As String = "password" 
Dim server As String = "localhost:7474" 
Dim link As String = "http://{0}:{1}@{2}/db/data" 
Dim url As New Uri(String.Format(link, user, pwd, server)) 

Dim client As New GraphClient(url) 
client.Connect() 

Dim query = client.Cypher _ 
    .Match("(p:Person {name: ""Tom Hanks""})-[:ACTED_IN]->(m:Movie)") _ 
    .Return(Function(p, m) New With { 
       .person = p.As(Of Person)(), _ 
       .movie = m.As(Of Movie)() 
      }) 

'Here the client threw an Exception 

For Each item In query.Results 
    Dim temp As String = String.Format("{0} - {1}<br>", item.movie.title, item.movie.released) 
    divOut.InnerHtml += temp 
Next 

在额外的,我创建了论文类。

Public Class Movie 
    Public Property title As String 
    Public Property released As Integer 
    Public Property tagline As String 
End Class 

Public Class Person 
    Public Property name As String 
    Public Property born As Integer 
End Class 
+0

你可以显示你的C#/ VB代码 - 你想要反序列化什么类? –

回答

1

错误来自匿名类型所产生你创建,现在,我不会假装知道为什么,而不需要花费一定的时间通过Neo4jClient代码库挖 - 这将会是很难找出究竟。

可以解决这个问题通过具体的类此示例工作和数据推出到屏幕上(我想指出,我没有 VB编码器,所以原谅愚蠢的错误):

Module Module1 
    Private Class Together 
     Public Property Person As Person 
     Public Property Movie As Movie 
    End Class 

    Sub Main() 
     Dim user = "neo4j" 
     Dim pwd = "password" 
     Dim server = "localhost:7474" 
     Dim link = "http://{0}:{1}@{2}/db/data" 
     Dim url As New Uri(String.Format(link, user, pwd, server)) 

     Dim client As New GraphClient(url) 
     client.Connect() 

     Dim query = New CypherFluentQuery(client) _ 
       .Match("(p:Person {name: ""Tom Hanks""})-[:ACTED_IN]->(m:Movie)") _ 
       .Return(Function(p, m) New Together With { 
        .Person = p.As(Of Person)(), _ 
        .Movie = m.As(Of Movie)() 
       }) 

     Dim results = query.Results.ToList() 

     For Each item In results 

      Dim temp As String = String.Format("{0} - {1}<br>", item.Movie.title, item.Movie.released) 
      Console.WriteLine(temp) 

     Next 
     Console.ReadLine() 
    End Sub 

End Module 

随着你的类定义,你已经拥有它们。

你可以试着在Neo4jClient的代码库中解决这个问题,并发出一个pull请求(这会很好),如果你确实需要这个,那么暂时你可能想要获得代码并使用你自己的代码编译版本,而不是nuget作为积极的发展似乎暂停一个小咒语。

PS。它的 vb特定的,C#对于匿名类型非常满意,所以也许某些匿名类型是在VB中处理的,这在代码库中是无法识别的。

+0

Chris ...非常感谢!你的决议很棒! –