如何以 json 格式将字符串数组传递给请求正文 [put request]
how to pass a array of strings to request body [put request] in json format
var tagsInput string
tagsInput = inputLine("Project tags [domain/topics etc, seprated by commas in input] :\n")
tags := strings.Split(tagsInput, ",")
parseTags, _ := json.Marshal(tags)
fmt.Println(tags)
fmt.Println(string(parseTags))
postBody, _ := json.Marshal(map[string]string{
"name": name,
"desc": desc,
"status": status,
"tags": string(parseTags),
})
我需要一个数组作为像 ["golang"] 这样的标签
但它是一个字符串 .
您当前正在尝试 json 编组字符串映射 map[string]string
。你想为 tags
字段做的是整理一个字符串数组 []string
.
您问题的答案是仅编组 tags
变量一次。快速的解决方案是使您的地图成为 interface{}
类型的地图。它允许您在地图中存储任意类型,这些类型将被正确 json 编组:
https://play.golang.org/p/7D-wy7rQ8o_6
input := "golang, elixir, python, java"
tags := strings.Split(input, ",")
postBody, _ := json.Marshal(map[string]interface{}{
"name": name,
"desc": desc,
"status": status,
"tags": tags,
})
缺点是你失去了类型安全。现在每个字段都可以是任何东西。更好的方法是为这个请求创建一个数据结构:
https://play.golang.org/p/wTbrXH0HXoG
type Request struct {
Name string `json:"name"`
Description string `json:"description"`
Status string `json:"status"`
Tags []string `json:"tags"`
}
input := "golang, elixir, python, java"
tags := strings.Split(input, ",")
postBody, _ := json.Marshal(Request{
Name: name,
Description: desc,
Status: status,
Tags: tags,
})
var tagsInput string
tagsInput = inputLine("Project tags [domain/topics etc, seprated by commas in input] :\n")
tags := strings.Split(tagsInput, ",")
parseTags, _ := json.Marshal(tags)
fmt.Println(tags)
fmt.Println(string(parseTags))
postBody, _ := json.Marshal(map[string]string{
"name": name,
"desc": desc,
"status": status,
"tags": string(parseTags),
})
我需要一个数组作为像 ["golang"] 这样的标签 但它是一个字符串 .
您当前正在尝试 json 编组字符串映射 map[string]string
。你想为 tags
字段做的是整理一个字符串数组 []string
.
您问题的答案是仅编组 tags
变量一次。快速的解决方案是使您的地图成为 interface{}
类型的地图。它允许您在地图中存储任意类型,这些类型将被正确 json 编组:
https://play.golang.org/p/7D-wy7rQ8o_6
input := "golang, elixir, python, java"
tags := strings.Split(input, ",")
postBody, _ := json.Marshal(map[string]interface{}{
"name": name,
"desc": desc,
"status": status,
"tags": tags,
})
缺点是你失去了类型安全。现在每个字段都可以是任何东西。更好的方法是为这个请求创建一个数据结构:
https://play.golang.org/p/wTbrXH0HXoG
type Request struct {
Name string `json:"name"`
Description string `json:"description"`
Status string `json:"status"`
Tags []string `json:"tags"`
}
input := "golang, elixir, python, java"
tags := strings.Split(input, ",")
postBody, _ := json.Marshal(Request{
Name: name,
Description: desc,
Status: status,
Tags: tags,
})