簡體   English   中英

從Neo4J 2.2.2反序列化Json

[英]Deserialize Json from Neo4J 2.2.2

我正在使用Neo4J 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生成的。

可能是CypherJsonDeserializer.cs的ParseInProjectionMode函數周圍的錯誤

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

該錯誤源於您正在創建的Anonymous類型,現在,我不假裝不知道為什么,並且不花一些時間來挖掘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代碼庫中修復此問題並發出請求請求(這會很好),如果您確實需要此請求,那么目前您可能想要獲取代碼並使用自己的編譯版本,而不是nuget作為活躍的開發似乎已經暫停了一小段時間。

PS。 特定於vb的,C#對此非常滿意匿名類型,因此也許可以通過某種方式在VB中處理匿名類型,而這在代碼庫中是無法識別的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM