in gdbclient/internal/graphsonv3/graphreader.go [398:437]
func getPath(r *result) (interface{}, error) {
v := &pathV3{}
err := json.Unmarshal(r.Value, v)
if err != nil {
return nil, internal.NewDeserializerError("path", r.Value, err)
}
if v.Labels.Type != gTypeList || v.Objects.Type != gTypeList {
return nil, internal.NewDeserializerError("path", r.Value, errors.New("inner type error"))
}
objects, err := resultListRouter(v.Objects.Value)
if err != nil {
return nil, err
}
labels, err := resultListRouter(v.Labels.Value)
if err != nil {
return nil, err
}
// check size
if len(objects) != len(labels) {
return nil, internal.NewDeserializerError("path", r.Value, errors.New("un-pair labels and objects"))
}
path := graph.NewDetachedPath()
for i := 0; i < len(objects); i++ {
var labels_str []string
label := labels[i].([]interface{})
labels_str = make([]string, len(label), len(label))
for i := 0; i < len(label); i++ {
labels_str[i] = label[i].(string)
}
path.Extend(objects[i], labels_str)
}
return path, nil
}