最近在学习go,发现go的json设计特别蛋疼,要解析出来一个json,需要预先定义struct,这对于用惯php的人来讲特别繁琐,因此引入了第三方的类库jsoniter,现在把对jsoniter的研究记录下,代码不一定高效,但一定能用
1、下载jsoniter类库
github地址:https://github.com/json-iterator/go
文档中有安装方法
2、设计复杂json数据,我是采用某金融网站的标的列表。
3、实现代码
package main
import (
"bytes"
"fmt"
"github.com/json-iterator/go"
"io"
"net/http"
"time"
)
func main(){
path := "http://xxxxx.com/list?version=1.0&page=1&userId=&version=1.0&pageSize=1"
list := Get(path)
_byte := []byte(list)
json_data := jsoniter.Get(_byte, "data","list")
//获取第一个
size := json_data.Size()
_data := []byte(json_data.ToString())
for i := 0 ; i< size ; i++{
balanceAmount := jsoniter.Get(_data,i,"balanceAmount").ToString()
fmt.Println(balanceAmount)
}
}
//get请求
func Get(url string) (response string) {
client := http.Client{Timeout: 5 * time.Second}
resp, error := client.Get(url)
defer resp.Body.Close()
if error != nil {
panic(error)
}
var buffer [512]byte
result := bytes.NewBuffer(nil)
for {
n, err := resp.Body.Read(buffer[0:])
result.Write(buffer[0:n])
if err != nil && err == io.EOF {
break
} else if err != nil {
panic(err)
}
}
response = result.String()
return
}
4、结果
13448000
0
0
0
0
|
请发表评论