Go語言JSON庫:Jason

jopen 10年前發布 | 43K 次閱讀 Jason Google Go/Golang開發

Jason目標是成為Go語言開發中慣用的JSON庫。受其它庫的啟發并對一些常見的使用進行了改進,它當前專注于讀取JSON數據,但不創建JSON。

數據類型

下面golang值用于JSON數據類型。及與原始數據類型的對應關系:

  • bool, for JSON booleans
  • float64, for JSON numbers
  • string, for JSON strings
  • []*Jason, for JSON arrays
  • map[string]*Jason, for JSON objects
  • nil for JSON null

 

示例代碼:

root, err := jason.NewFromReader(res.Body)

root.Get("name").String()
root.Get("age").Number()
root.Get("verified").Boolean()
root.Get("education").Object()
root.Get("friends").Array()

//讀取嵌套內容
root.Get("person", "name").String()
root.Get("person", "age").Number()
root.Get("person", "verified").Boolean()
root.Get("person", "education").Object()
root.Get("person", "friends").Array()

//判斷數值是否存在
root.Has("person", "name")
root.Get("person", "name").Exists()

//數值校驗
root.Get("name").IsString()
root.Get("age").IsNumber()
root.Get("verified").IsBoolean()
root.Get("education").IsObject()
root.Get("friends").IsArray()
root.Get("friends").IsNull()

//循環
for _, friend := range person.Get("friends").Array() {
  name := friend.Get("name").String()
  age := friend.Get("age").Number()
}

完整例子:

package main

import (
  "github.com/antonholmquist/jason"
  "log"
)

func main() {

  exampleJSON := `{
    "name": "Walter White",

    "age": 51,
    "children": [
      "junior",
      "holly"
    ],
    "other": {
      "occupation": "chemist",
      "years": 23
    }
  }`

  j, _ := jason.NewFromString(exampleJSON)

  log.Println("name:", j.Get("name").String())
  log.Println("age:", j.Get("age").Number())

  log.Println("occupation:", j.Get("other", "occupation").String())
  log.Println("years:", j.Get("other", "years").Number())

  for i, child := range j.Get("children").Array() {
    log.Printf("child %d: %s", i, child.String())
  }

}

項目主頁:http://www.baiduhome.net/lib/view/home/1417570814964

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!