請教Golang處理Json, 處理的是 List of Json這種情況,大家有何高見?
現在 Restful API 好多,有時候想要抓取些資訊,整理成自己有用的,比如說 Github 的 release, 但是有些返回的不是 Json 而是 List of Json.對於這種情況,當然 Python 的 Json 庫是通吃的,一點問題都沒有,我用 Golang 重寫就麻煩大了
比如舉個例子:
[
{
"one-level": "hello",
"two-level": {
"aa" : "hello",
"bb" : "world"
}
},
{
"one-level": "你好",
"two-level": {
"aa" : "你好",
"bb" : "世界"
}
}
]
由於:
resp, err := http.Get(url)
body, err := ioutil.ReadAll(resp.Body)
最後得到的 body 是 [] byte,我現在用 simplejson 簡單的處理是這麼做的:
package main
import "github.com/bitly/go-simplejson"
import "fmt"
func main() {
bytes := []byte(`{"hello":"world"}`)
js, _ := simplejson.NewJson(bytes)
fmt.Println(js)
fmt.Println(js.Get("hello").MustString())
bytes2 := []byte(`[
{
"one-level": "hello",
"two-level": {
"aa" : "hello",
"bb" : "world"
}
},
{
"one-level": "你好",
"two-level": {
"aa" : "你好",
"bb" : "世界"
}
}
]`)
js2, _ := simplejson.NewJson(bytes2)
fmt.Println(js2.MustArray())
arr := js2.MustArray()
for _, item := range arr {
m, ok := item.(map[string]interface{})
if !ok {
fmt.Println("Invalide data")
}
fmt.Println(m["one-level"])
n, ok := m["two-level"].(map[string]interface{})
if !ok {
fmt.Println("Invalid data")
}
fmt.Println(n["bb"])
}
}
simplejson 對於純 Json 的處理還是蠻方便的,但是對於這種 list of json 的,感覺處理的不夠優雅,各位大神有沒有處理的經驗,大家一般是怎麼去處理這樣的問題的?特別是層數比較多的情況
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- golang json處理問題GolangJSON
- Python處理JSONPythonJSON
- 處理JSON資料JSON
- 處理json格式的資料JSON
- Redo 丟失的4種情況的處理方法
- PostgreSQL處理JSON入門SQLJSON
- flutter json資料處理FlutterJSON
- flutter demo (三):json處理FlutterJSON
- Hive處理Json資料HiveJSON
- Redo丟失的4種情況及處理方法
- Python資料處理(一):處理 JSON、XML、CSV 三種格式資料PythonJSONXML
- 處理表鎖定的情況
- java 請求HTTP返回json集合,物件處理方式JavaHTTPJSON物件
- 請教 Element 的錯誤處理
- spark處理json資料DemoSparkJSON
- C#處理json實戰C#JSON
- Delphi處理JSON格式資料JSON
- Swift Json 解析異常處理SwiftJSON
- js字串與json物件處理字串JSON物件
- 在REST SOE中處理JSONRESTJSON
- 二、淺談 JSON 處理技巧JSON
- 「譯」使用 System.Net.Http.Json 高效處理JsonHTTPJSON
- Flutter基礎-039-json處理FlutterJSON
- Java程式異常處理的特殊情況Java
- MySql之json_extract函式處理json欄位MySqlJSON函式
- oradebug處理DB hang情況
- 在MDX中處理邊界情況
- FE.UX-常見CSS邊界情況防禦處理UXCSS
- go 處理 jsonArray 無 key 的 JSON 串GoJSON
- C#中處理JSON資料的方式C#JSON
- 我請教大家這個平常的問題怎麼處理的
- .net core 在網路高併發下提高JSON的處理效率JSON
- Laravel 統一錯誤處理為 JSONLaravelJSON
- Java基礎-處理json字串解析案例JavaJSON字串
- Java JSON處理類庫JacksonJavaJSON
- 開發工具-scala處理json格式利器-json4sJSON
- xcodebuild -workspace 情況下,部分坑的處理XCodeUI
- 如何處理瀏覽器的斷網情況?瀏覽器