正确的Golang的JSON块输出
我一直在寻找解决这个问题的办法。它实际上来自sql数据库,但这也说明了问题:正确的Golang的JSON块输出,go,Go,我一直在寻找解决这个问题的办法。它实际上来自sql数据库,但这也说明了问题: package main import ( "fmt" "encoding/json" ) func main() { m := map[string]string{ "USER_ID":"JD", "USER_NAME":"John Doe", } json, _ := json.Marshal(m) for i := 0; i <
package main
import (
"fmt"
"encoding/json"
)
func main() {
m := map[string]string{
"USER_ID":"JD",
"USER_NAME":"John Doe",
}
json, _ := json.Marshal(m)
for i := 0; i < 4; i++ {
fmt.Println(string(json))
}
}
所需的输出如下:
[{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"}]
使用map[string]string或interface可以实现这一点吗
使用map[string]string或interface可以实现这一点吗
答案很简单——只要您想生成JSON格式的列表输出,就可以使用
下面是您所需输出()的示例:
主程序包
进口(
“fmt”
“编码/json”
)
func main(){
//定义一个贴图切片
var mySlice[]映射[string]字符串
//定义地图
m:=映射[字符串]字符串{
“用户ID”:“JD”,
“用户名”:“John Doe”,
}
//将贴图添加到切片4次
对于i:=0;i<4;i++{
mySlice=append(mySlice,m)
}
//打印切片
json,216;:=json.Marshal(mySlice)
fmt.Println(字符串(json))
}
//输出:[{“用户ID”:“JD”,“用户名称”:“John Doe”},{“用户ID”:“JD”,“用户名称”:“John Doe”},{“用户ID”:“JD”,“用户名称”:“John Doe”},{“用户ID”:“JD”,“用户名称”:“John Doe”}]
您将地图编组一次,然后重复打印它。json包究竟如何知道它是列表的一部分?如果您希望它成为一个列表,请将其设置为[]映射[string]字符串
。或者手动打印括号和逗号。@Kaedys是对的,您不使用任何列表(切片),所以您不打印任何列表(切片)。或者,您可以构建列表并重复添加地图<代码>列表:=[]映射[字符串]字符串{};list=append(list,m)以防万一,您当前的输出是格式的,有些工具可以读取。@skovorodkin“…有些工具可以读取。”这就是我的想法,但最常见的方式似乎是格式[{},{}]。如果我错了,请纠正我。@sibert,视情况而定。例如,如果您将输出写入一个文件,然后运行另一个工具来处理它,那么使用JSON行可能是更好的方法,因为一行解析一个对象比一次解析整个文件更便宜。
[{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"}]
package main
import (
"fmt"
"encoding/json"
)
func main() {
// define a slice of maps
var mySlice []map[string]string
// define a map
m := map[string]string{
"USER_ID":"JD",
"USER_NAME":"John Doe",
}
// add the map 4 times to the slice
for i := 0; i < 4; i++ {
mySlice = append(mySlice, m)
}
// print the slice
json, _ := json.Marshal(mySlice)
fmt.Println(string(json))
}
// Output: [{"USER_ID":"JD","USER_NAME":"John Doe"},{"USER_ID":"JD","USER_NAME":"John Doe"},{"USER_ID":"JD","USER_NAME":"John Doe"},{"USER_ID":"JD","USER_NAME":"John Doe"}]