在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:antonholmquist/jason开源软件地址:https://github.com/antonholmquist/jason开源编程语言:Go 100.0%开源软件介绍:Jason is an easy-to-use JSON library for Go. AboutJason is designed to be convenient for reading arbitrary JSON while still honoring the strictness of the language. Inspired by other libraries and improved to work well for common use cases. It currently focuses on reading JSON data rather than creating it. API Documentation can be found on godoc.org. Installgo get github.com/antonholmquist/jason Importimport (
"github.com/antonholmquist/jason"
) Data typesThe following golang values are used to represent JSON data types. It is consistent with how
ExamplesCreate from bytesCreate object from bytes. Returns an error if the bytes are not valid JSON. v, err := jason.NewObjectFromBytes(b) If the root object is unknown or not an object, use v, err := jason.NewValueFromBytes(b) Create from a reader (like a http response)Create value from a io.reader. Returns an error if the string couldn't be parsed. v, err := jason.NewObjectFromReader(res.Body) Read valuesReading values is easy. If the key path is invalid or type doesn't match, it will return an error and the default value. name, err := v.GetString("name")
age, err := v.GetInt64("age")
verified, err := v.GetBoolean("verified")
education, err := v.GetObject("education")
friends, err := v.GetObjectArray("friends")
interests, err := v.GetStringArray("interests") Read nested valuesReading nested values is easy. If the path is invalid or type doesn't match, it will return the default value and an error. name, err := v.GetString("person", "name")
age, err := v.GetInt64("person", "age")
verified, err := v.GetBoolean("person", "verified")
education, err := v.GetObject("person", "education")
friends, err := v.GetObjectArray("person", "friends") Loop through arrayLooping through an array is done with friends, err := person.GetObjectArray("friends")
for _, friend := range friends {
name, err := friend.GetString("name")
age, err := friend.GetNumber("age")
} Loop through objectLooping through an object is easy. person, err := person.GetObject("person")
for key, value := range person.Map() {
...
} Sample AppExample project: package main
import (
"github.com/antonholmquist/jason"
"log"
)
func main() {
exampleJSON := `{
"name": "Walter White",
"age": 51,
"children": [
"junior",
"holly"
],
"other": {
"occupation": "chemist",
"years": 23
}
}`
v, _ := jason.NewObjectFromBytes([]byte(exampleJSON))
name, _ := v.GetString("name")
age, _ := v.GetNumber("age")
occupation, _ := v.GetString("other", "occupation")
years, _ := v.GetNumber("other", "years")
log.Println("age:", age)
log.Println("name:", name)
log.Println("occupation:", occupation)
log.Println("years:", years)
children, _ := v.GetStringArray("children")
for i, child := range children {
log.Printf("child %d: %s", i, child)
}
others, _ := v.GetObject("other")
for _, value := range others.Map() {
s, sErr := value.String()
n, nErr := value.Number()
if sErr == nil {
log.Println("string value: ", s)
} else if nErr == nil {
log.Println("number value: ", n)
}
}
} DocumentationDocumentation can be found on godoc: https://godoc.org/github.com/antonholmquist/jason TestTo run the project tests: go test CompatibilityGo 1.1 and up. Where does the name come from?I remembered it from an email one of our projects managers sent a couple of years ago.
AuthorAnton Holmquist, http://twitter.com/antonholmquist |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论