我試圖找出解組從 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 回答
- 0 關注
- 289 瀏覽
添加回答
舉報
0/150
提交
取消