回答編集履歴
1
改善例追記
test
CHANGED
@@ -2,3 +2,43 @@
|
|
2
2
|
コード例に記述した`map[int]T`では受け取れません。`[]T`で受け取りましょう。
|
3
3
|
JSの世界ではObjectとArrayの差がインデックスが整数かどうかで似た扱いができちゃうのに対し、
|
4
4
|
GoでのSliceとMapは全く異なる扱いです。
|
5
|
+
|
6
|
+
あと例示のJSONはJSONの規約とあっていないところがありました!
|
7
|
+
|
8
|
+
### 改善例:
|
9
|
+
https://go.dev/play/p/UNnz01Yk9eq
|
10
|
+
```go
|
11
|
+
package main
|
12
|
+
|
13
|
+
import (
|
14
|
+
"encoding/json"
|
15
|
+
"fmt"
|
16
|
+
)
|
17
|
+
|
18
|
+
const s = `
|
19
|
+
{
|
20
|
+
"body":{
|
21
|
+
"user_id":"3",
|
22
|
+
"expectations":[
|
23
|
+
{"time":"1","input_number_1":"1","input_number_2":"2","input_number_3":"3","input_number_4":"4","input_number_5":"5","input_number_6":"6"},
|
24
|
+
{"time":"2","input_number_1":"1","input_number_2":"2","input_number_3":"3","input_number_4":"4","input_number_5":"5","input_number_6":"6"}
|
25
|
+
]
|
26
|
+
}
|
27
|
+
}
|
28
|
+
`
|
29
|
+
|
30
|
+
type A構造体名 struct {
|
31
|
+
Body struct {
|
32
|
+
UserID string `json:"user_id"`
|
33
|
+
Expectations []map[string]string `json:"expectations"` // ※可変長です。UI的には行追加ボタンを押して何行でも入力できるイメージ
|
34
|
+
} `json:"body"`
|
35
|
+
}
|
36
|
+
|
37
|
+
func main() {
|
38
|
+
var v A構造体名
|
39
|
+
if err := json.Unmarshal([]byte(s), &v); err != nil {
|
40
|
+
panic(err)
|
41
|
+
}
|
42
|
+
fmt.Println(v.Body.Expectations)
|
43
|
+
}
|
44
|
+
```
|