回答編集履歴

1

Update

2021/11/29 06:55

投稿

melian
melian

スコア19912

test CHANGED
@@ -1,20 +1,46 @@
1
- JSON タグを付けましょう。それから、`fmt.Printf` fomartting directive(`%v`) が無いので追加しています。
1
+ 一旦 `map` で受け取って `structure` に値を入れます。
2
+
3
+ ```go
4
+
5
+ func main() {
6
+
7
+ data := "{\"main\":[{\"name\":\"aaaaaaaa-aaaa\",\"age\":36},{\"name\":\"bbbbbbbb-bbbb\",\"age\":20}]}"
2
8
 
3
9
 
4
10
 
5
- ```go
11
+ m := make(map[string][]B)
6
12
 
7
- type A struct {
13
+ data1 := []byte(data)
8
14
 
9
- Test []B `json:"main"`
15
+ decodeErr := json.Unmarshal(data1, &m)
10
16
 
17
+ if decodeErr != nil {
18
+
19
+ panic(decodeErr)
20
+
11
- }
21
+ }
12
22
 
13
23
 
14
24
 
15
- fmt.Printf("!!!!!エラー結果!!!!! %v\n", decodeErr)
25
+ var structure A
16
26
 
27
+ var tagName string
28
+
29
+ for k, v := range m {
30
+
31
+ tagName = k
32
+
33
+ structure.Test = v
34
+
35
+ }
36
+
37
+
38
+
39
+ fmt.Printf("Tag name = %v\n", tagName)
40
+
17
- fmt.Printf("!!!!!結果!!!!! %v\n", structure)
41
+ fmt.Printf("structure = %+v\n", structure)
42
+
43
+ }
18
44
 
19
45
  ```
20
46
 
@@ -24,8 +50,8 @@
24
50
 
25
51
  $ go run .
26
52
 
27
- !!!!!エラー結果!!!!! <nil>
53
+ Tag name = main
28
54
 
29
- !!!!!結果!!!!! {[{aaaaaaaa-aaaa 36} {bbbbbbbb-bbbb 20}]}
55
+ structure = {Test:[{Name:aaaaaaaa-aaaa Age:36} {Name:bbbbbbbb-bbbb Age:20}]}
30
56
 
31
57
  ```