実現したいこと
以下のJSONを出力する
//理想のJSON { "command": "ENT", "table": [ { "table_name": "basic", "clientid": 0, "server": "basic" }, { "table_name": "contents", "clientid": 0, "time_control": "0" } ] }
//現在のJSON { "command": "ENT", "table": [ { "Table1": { "table_name": "basic", "clientid": 0, "server": "basic" }, "Table2": { "table_name": "contents", "clientid": 0, "time_control": 0 } } ] }
"Table1": {
"Table2": {
の部分が不要なのですが、どうしても消せません。。。
プログラムは以下です。
異なる構造体をまとめて、リテラルスライスで出力しようとしています。
GO
1package main 2 3import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7) 8 9//Command ENT 10type Command struct { 11 Command string `json:"command"` 12 Tables []Table `json:"table"` 13} 14 15//Table Data 16type Table1 struct { 17 TableName string `json:"table_name"` 18 Clientid int `json:"clientid"` 19 Server string `json:"server"` 20} 21 22type Table2 struct { 23 TableName string `json:"table_name"` 24 Clientid int `json:"clientid"` 25 TimeControl int `json:"time_control"` 26} 27 28type Table struct { 29 Table1 Table1 30 Table2 Table2 31} 32 33func main() { 34 BasicConfig := Table1{TableName: "basic", Clientid: 0, Server: "basic"} 35 ContentsFunc := Table2{TableName: "contents", Clientid: 0, TimeControl: 0} 36 jsonStr := Command{ 37 Command: "ENT", 38 Tables: []Table{ 39 { 40 BasicConfig, 41 ContentsFunc, 42 }, 43 }, 44 } 45 46 jsonBytes, err := json.Marshal(jsonStr) 47 if err != nil { 48 fmt.Println("JSON Marshal error:", err) 49 return 50 } 51 out := new(bytes.Buffer) 52 // プリフィックスなし、スペース4つでインデント 53 json.Indent(out, jsonBytes, "", " ") 54 fmt.Println(out.String()) 55} 56
よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 01:01
2020/06/29 01:16 編集
2020/06/29 03:42
2020/06/29 04:04
2020/06/29 07:03