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

回答編集履歴

2

呼び出し方をちゃんとしました。

2019/01/28 10:40

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -2,13 +2,14 @@
2
2
  個人的には後者が好みです。
3
3
  あと、 [https://github.com/tidwall/gjson](https://github.com/tidwall/gjson) を使うという方法もあります。
4
4
 
5
- [https://play.golang.org/p/mlwcYxB5BkS](https://play.golang.org/p/mlwcYxB5BkS)
5
+ [https://play.golang.org/p/xBAqGOiuE1E](https://play.golang.org/p/xBAqGOiuE1E)
6
6
  ```go
7
7
  package main
8
8
 
9
9
  import (
10
10
  "encoding/json"
11
11
  "fmt"
12
+ "log"
12
13
  )
13
14
 
14
15
  const content = `{
@@ -82,7 +83,19 @@
82
83
  }
83
84
 
84
85
  func main() {
85
- fmt.Println(Get1([]byte(content)))
86
+ links, err := Get1([]byte(content))
87
+ if err != nil {
88
+ log.Fatalln(err)
89
+ }
90
+ for _, link := range links {
91
+ fmt.Println(link)
92
+ }
86
- fmt.Println(Get2([]byte(content)))
93
+ links, err = Get2([]byte(content))
94
+ if err != nil {
95
+ log.Fatalln(err)
96
+ }
97
+ for _, link := range links {
98
+ fmt.Println(link)
99
+ }
87
100
  }
88
101
  ```

1

修正

2019/01/28 10:40

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -1,7 +1,8 @@
1
1
  Get1とGet2の2つの方法を紹介します。
2
2
  個人的には後者が好みです。
3
+ あと、 [https://github.com/tidwall/gjson](https://github.com/tidwall/gjson) を使うという方法もあります。
3
4
 
4
- https://play.golang.org/p/st8U6IWLPXD
5
+ [https://play.golang.org/p/mlwcYxB5BkS](https://play.golang.org/p/mlwcYxB5BkS)
5
6
  ```go
6
7
  package main
7
8
 
@@ -46,9 +47,9 @@
46
47
 
47
48
  }`
48
49
 
49
- func Get1() ([]string, error) {
50
+ func Get1(b []byte) ([]string, error) {
50
51
  var v interface{}
51
- if err := json.Unmarshal([]byte(content), &v); err != nil {
52
+ if err := json.Unmarshal(b, &v); err != nil {
52
53
  return nil, err
53
54
  }
54
55
  data := v.(map[string]interface{})["data"].([]interface{})
@@ -68,9 +69,9 @@
68
69
  } `json:"data"`
69
70
  }
70
71
 
71
- func Get2() ([]string, error) {
72
+ func Get2(b []byte) ([]string, error) {
72
73
  var v S
73
- if err := json.Unmarshal([]byte(content), &v); err != nil {
74
+ if err := json.Unmarshal(b, &v); err != nil {
74
75
  return nil, err
75
76
  }
76
77
  var res []string
@@ -81,7 +82,7 @@
81
82
  }
82
83
 
83
84
  func main() {
84
- fmt.Println(Get1())
85
+ fmt.Println(Get1([]byte(content)))
85
- fmt.Println(Get2())
86
+ fmt.Println(Get2([]byte(content)))
86
87
  }
87
88
  ```