Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 将neo4j结果解组到Golang中的嵌套结构_Json_Go_Neo4j_Unmarshalling - Fatal编程技术网

Json 将neo4j结果解组到Golang中的嵌套结构

Json 将neo4j结果解组到Golang中的嵌套结构,json,go,neo4j,unmarshalling,Json,Go,Neo4j,Unmarshalling,我正在使用neoism库()与一个本地neo4j数据库进行对话——我对neo4j来说是个新手,所以我对neo4j的理解上的差距可能在问题的任何一方 我有一个简单的数据库,一个“页面”节点,它与一个“模板”节点相关。我希望能够用struct来表示每个节点,并将它们嵌套在另一个节点中,但我正在努力让它工作 创建简单数据库: template, err := ioutil.ReadFile(viewPath + "templates/default.mustache") if err != nil{

我正在使用neoism库()与一个本地neo4j数据库进行对话——我对neo4j来说是个新手,所以我对neo4j的理解上的差距可能在问题的任何一方

我有一个简单的数据库,一个“页面”节点,它与一个“模板”节点相关。我希望能够用struct来表示每个节点,并将它们嵌套在另一个节点中,但我正在努力让它工作

创建简单数据库:

template, err := ioutil.ReadFile(viewPath + "templates/default.mustache")

if err != nil{
    panic(err)
}

defaultTemplate, _ := db.CreateNode(neoism.Props{
    "name": "default",
    "content": string(template),
})

defaultTemplate.AddLabel("Template")

n0, _ := db.CreateNode(neoism.Props{
    "name": "Home",
    "slug": "home",
    "title": "Home Page",
    "content" : "here I am",
})

n0.AddLabel("Page")
n0.Relate("TEMPLATE", template.Id(), neoism.Props{}) 
现在让我们来谈谈如何把数据拿回来

以下是我的查询,效果很好:

type PageStruct struct{
    Name string `json:"p.name"`
    Slug string `json:"p.slug"`
    Title string `json:"p.title"`
    Content string `json:"p.content"`
    TemplateName string `json:"t.name"`
    TemplateContent string `json:"t.content"`

}    

res := []PageStruct{}

    cq := neoism.CypherQuery{
        Statement: `
            MATCH (p:Page)-[r:TEMPLATE]->(t:Template)
            WHERE p.slug = {slug}
            RETURN p.name, p.slug, p.title, p.content, t.name, t.content
        `,
        Parameters: neoism.Props{"slug": pageSlug},
        Result:     &res,
    }

    db.Cypher(&cq)
    page := res[0]
但理想情况下,我想要的是将其解组到嵌套结构中,如下所示:

    type PageStruct struct{
        Name string `json:"p.name"`
        Slug string `json:"p.slug"`
        Title string `json:"p.title"`
        Content string `json:"p.content"`
        Template struct {
            Name string `json:"t.name"`
            Content string `json:"t.content"`
                 } `json:"t"`

}
我一直在尝试各种各样的事情,但都没有成功,有谁能给我一些建议,告诉我如何实现这项计算机工程的壮举

此外,我还不清楚如何处理neo4j中的关系,因为没有强制执行(我知道)关系类型(例如一对一、一对多),所以如何处理-我们总是假设一个数据数组吗

非常感谢您的帮助/建议。

请使用


游乐场:。

感谢您的帮助,这对单个模板非常有效,但是如果我在页面上附加两个模板节点(我不需要这样做,但在其他查询中会这样做),两个模板都会被查询拉入,但我想知道如何用模板填充[]模板结构数组。在页面结构中包含[]模板不起作用。。。有什么想法吗?对不起,我从来没有和neo4j合作过。您必须查找文档,看看它是否可以生成JSON数组(如
[{“t.name”:“1”},{“t.name”:“2”}]
)以将它们解组到
[]模板中,或者询问一个新问题。好的,感谢您对JSON编组的帮助,我将在下周继续调查
type Page struct {
    Name string `json:"p.name"`
    // ...
    Template
}

type Template struct {
    Name string `json:"t.name"`
    // ...
}