为了账号安全,请及时绑定邮箱和手机立即绑定

Go:解组 Neo4j 事务的结果

Go:解组 Neo4j 事务的结果

Go
喵喔喔 2021-07-27 16:35:47
我试图找出解组从 Neo4j 事务中获得的 JSON 结果的最佳方法。数据作为一组列和数据返回,我试图将它们硬塞到 Go 结构中。这是我需要结果的结构:type Person struct {  Id   string `json:id`  Name string `json:name`}type Persons []*Person这是我从交易中返回的 JSON:{  "results":  [    {"columns":[],"data":[]},      {"columns":[],"data":[]},    {"columns":[],"data":[]},    {"columns":["r"],"data":   // I only care this result which has data      [        {"row":[{"id":"1","name":"test1"}]},  // actual results        {"row":[{"id":"2","name":"test2"}]},        {"row":[{"id":"3","name":"test3"}]}      ]    }  ],  "errors":[]}这只是一个特殊的例子。其他事务将具有可变数量results(只有我关心的最后一个),并且需要将其解组到不同的结构中。我不想创建必须为每个模型结构创建一个唯一的结果结构。这是另一个例子:这是一个不同的结构:type Phone struct {  Id     string `json:id`  Number string `json:number`}type Phones []*Phone以及相应的 JSON:{  "results":  [    {"columns":[],"data":[]},      {"columns":["r"],"data":   // I only care this result which has data      [        {"row":[{"id":"4","number":"555-1234"}]},  // actual results        {"row":[{"id":"5","number":"555-1232"}]},        {"row":[{"id":"6","number":"555-1235"}]}      ]    }  ],  "errors":[]}目前我只是读出整个响应,使用字符串替换修复格式,然后正常解组,但我想知道是否有更好的方法。这是我希望改进的当前实现。// Structures to unmarshal Neo4j transaction results into.type transactionResponse struct {    Results *json.RawMessage   `json:"results"`    Errors  []transactionError `json:"errors"`}// req is my POST to Neo4j resp, err := db.client.Do(req)defer resp.Body.Close()if err != nil {    return fmt.Errorf("Error posting transaction: %s", err)}body, err := ioutil.ReadAll(resp.Body)var txResponse transactionResponseif err = json.Unmarshal(body, &txResponse); err == nil {    json.Unmarshal(formatTransactionResponse(*txResponse.Results), &Phones{});}    
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信