質問するログイン新規登録

回答編集履歴

1

Update

2021/11/29 06:55

投稿

melian
melian

スコア21527

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