回答編集履歴
2
呼び出し方をちゃんとしました。
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/
|
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
|
-
|
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
|
-
|
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
修正
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/
|
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(
|
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(
|
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
|
```
|