项目作者: qq1060656096

项目描述 :
go 语言简单的json解析
高级语言: Go
项目地址: git://github.com/qq1060656096/go-simplejson.git
创建时间: 2019-02-20T03:50:29Z
项目社区:https://github.com/qq1060656096/go-simplejson

开源协议:MIT License

下载


go-simplejson

simplejson是一个golang包, 提供快速和简单的方法来从JSON文件中获取值、设置值、删除值。

1. Json解码编码?

  1. // json解码
  2. j, err := simplejson.NewJson([]byte(jsonStr))
  3. // json漂亮编码
  4. s, err := j.EncodeJsonPretty()
  5. // json编码
  6. s, err1 := j.EncodeJSON()

2. Json获取值?

  1. j, err := simplejson.NewJson([]byte(jsonStr))
  2. // 获取json object对象值
  3. j.Get(key string).String()
  4. // 获取json 多级object对象值
  5. j.Get(key string).Get(key string).Int()
  6. // 获取json array数组索引值
  7. j.GetArrayIndex(index int).String()
  8. // 获取json 多级array数组索引值
  9. j.GetArrayIndex(index int).GetArrayIndex(index int).Int()
  10. // 获取json 多级数组对象组合键索引值
  11. j.GetArrayIndex(index int).Get(key string).GetArrayIndex(index int).Int()

3. Json获取类型值?

  1. j, err := simplejson.NewJson([]byte(jsonStr))
  2. // 获取json object对象值
  3. v, err := j.Object()
  4. // 获取json Array数组值
  5. v, err := j.Array()
  6. // 获取json 字符串值
  7. v, err := j.String()
  8. // 获取json bool布尔值
  9. v, err := j.Bool()
  10. // 获取json int整型值
  11. v, err := j.Int()
  12. // 获取json int64整型值
  13. v, err := j.Int64()
  14. // 获取json uint64整型值
  15. v, err := j.Uint64()
  16. // 获取json flat32浮点类型值
  17. v, err := j.Float32()
  18. // 获取json flat64浮点类型值
  19. v, err := j.Float64()

4. Json设置值?

  1. j, err := simplejson.NewJson([]byte(jsonStr))
  2. // 设置json字段值, 支持多级键, 支持多级键
  3. j.MustSet(value interface{}, key string)
  4. j.MustSet(value interface{}, index int)
  5. j.MustSet(value interface{}, key1 string|index1 int, key2 string,index2 int, keyN string|indexN int)
  6. j.MustSet(value interface{}, key1 string|index1 int, key2 string,index2 int, keyN string|indexN int).MustSet(value interface{}, key1 string|index1 int, key2 string,index2 int, keyN string|indexN int)

5. Json删除值?

  1. j, err := simplejson.NewJson([]byte(jsonStr))
  2. // 删除json值, 支持多级键删除最后一个键, 支持连贯操作
  3. j.Del(key string)
  4. j.Del(index int)
  5. j.Del(key1 string|index1 int, key2 string,index2 int, keyN string|indexN int).Del(key1 string|index1 int, key2 string,index2 int, keyN string|indexN int)
  6. // 删除json字段值, 支持多级键删除最后一个键, 支持连贯操作
  7. j.MustDel(key string)
  8. j.MustDel(index int)
  9. j.MustDel(key1 string|index1 int, key2 string,index2 int, keyN string|indexN int).MustDel(key1 string|index1 int, key2 string,index2 int, keyN string|indexN int)

6. json类型对应golang类型?

  1. boolean >> bool
  2. number >> float32,float64,int, int64, uint64
  3. string >> string
  4. null >> nil
  5. array >> []interface{}
  6. object >> map[string]interface{}

文档

1. 字符串解析成json, 并获取值

  1. j, err := simplejson.NewJson([]byte(jsonStr))
  2. // 获取json object对象值
  3. j.Get(key string).String()
  4. // 获取json 多级object对象值
  5. j.Get(key string).Get(key string).Int()
  6. // 获取json array数组索引值
  7. j.GetArrayIndex(index int).String()
  8. // 获取json 多级array数组索引值
  9. j.GetArrayIndex(index int).GetArrayIndex(index int).Int()
  10. // 获取json 多级数组对象组合键索引值
  11. j.GetArrayIndex(index int).Get(key string).GetArrayIndex(index int).Int()

示例

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/qq1060656096/go-simplejson"
  5. )
  6. func main() {
  7. jsonStr := `
  8. {
  9. "uid": 1,
  10. "name": "tester1",
  11. "pass": "123456",
  12. "profile": {
  13. "age": 18,
  14. "weight": "75kg",
  15. "height": "1.71m",
  16. "mobile": [
  17. 15400000001,
  18. 15400000002
  19. ]
  20. }
  21. }
  22. `
  23. // 字符串解析成json对象
  24. j, err := simplejson.NewJson([]byte(jsonStr))
  25. // 简单获取值, 并转换成string类型
  26. nameValue, err := j.Get("name").String()
  27. fmt.Println(err)
  28. fmt.Println(nameValue) // 输出: tester1
  29. // 连贯操作获取子级键的值, 并转换成int类型
  30. ageValue, err := j.Get("profile").Get("age").Int()
  31. fmt.Println(ageValue) // 输出: 18
  32. // 连贯操作获取子级数组索引值, 并转换成int类型
  33. mobileIndex2Value, err := j.Get("profile").Get("mobile").GetArrayIndex(1).Int()
  34. fmt.Println(mobileIndex2Value) // 输出: 15400000002
  35. }

2. 设置json对象值

  1. j, err := simplejson.NewJson([]byte(jsonStr))
  2. j.MustSet(value interface{}, key string)
  3. j.MustSet(value interface{}, index int)
  4. j.MustSet(value interface{}, key1 string|index1 index, key2 string,index2 index, keyN string|indexN index)

示例

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/qq1060656096/go-simplejson"
  5. )
  6. func main() {
  7. jsonStr := `
  8. {
  9. "mobile": [
  10. 15400000001,
  11. 15400120302
  12. ],
  13. "uid": 1
  14. }
  15. `
  16. j, err := simplejson.NewJson([]byte(jsonStr))
  17. fmt.Println(err)
  18. s0, err := j.EncodeJsonPretty()
  19. fmt.Printf("%s\n", s0)
  20. // 设置uid值
  21. j.MustSet(2, "uid")// uid设置为2
  22. s, err := j.EncodeJsonPretty()
  23. fmt.Printf("%s\n", s)
  24. /*
  25. {
  26. "mobile": [
  27. 15400000001,
  28. 15400120302
  29. ],
  30. "uid": 2
  31. }
  32. */
  33. // 设置多层级键的值
  34. j.MustSet(25400000002, "mobile", 1)// 设置mobile索引1的值为25400000002
  35. s1, err := j.EncodeJsonPretty()
  36. fmt.Printf("%s\n", s1)
  37. /*
  38. {
  39. "mobile": [
  40. 15400000001,
  41. 25400000002
  42. ],
  43. "uid": 2
  44. }
  45. */
  46. }