将一个字符串连接到一个结构片段

我正在尝试创建一个端点 Go API 以供前端 JavaScript 图形库使用。

应该发生什么:

  1. /data 端点以获取 JSON 数据数组。

  2. 数据只是一片 go 结构,在这个例子中只有两个,但它将超过 10000。

  3. 图形库需要额外的元数据。它被保存为一个名为 AdditionalInfo 的变量。

  4. 问题是当我想对 AdditionalInfo + AllAgents 进行编码时,它不会让我将字符串与结构片段连接起来。

  5. 在结构切片的末尾还需要 ]` 以使其成为有效的 JSON

问题:

  1. 如何在结构切片的前后添加额外数据?

  2. 将结构附加到一片结构是否有效?

  3. 创建一个已知长度的切片然后使用范围附加到它会更好吗?



尚方宝剑之说
浏览 91回答 1
1回答

心有法竹

将附加信息、代理和右括号写入响应: io.WriteString(w, "{") io.WriteString(w, AdditionalInfo) json.NewEncoder(w).Encode(AllAgents) io.WriteString(w, "]}")  // closing ] for data and closing } for root[ ]请注意,这对代理进行了两个级别的编码。目前还不清楚这是否是您想要的。另一种方法是创建一个与输出结构匹配的 Go 值并对其进行编码:v := map[string]interface{}{    "meta": map[string]interface{}{        "page":    1,        "pages":   1,        "perpage": -1,        "total":   350,        "sort":    "asc",        "field":   "RecordID",    },    "data": AllAgents, } if err := json.NewEncoder(w).Encode(v); err != nil {    // handle error }同样,不清楚您希望在代理周围嵌套多少。您可能需要这种变化:v := map[string]interface{}{    "meta": map[string]interface{}{        "page":    1,        "pages":   1,        "perpage": -1,        "total":   350,        "sort":    "asc",        "field":   "RecordID",    },    "data": []interface{}{AllAgents}, } if err := json.NewEncoder(w).Encode(v); err != nil {    // handle error }回复:效率创建最终大小的切片通常比使用append. 通过使用指针切片[]*SingleAgent而不是结构值切片可能会获得一些效率[]SingleAgent。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go