Go Searcher模块快速访问指定json字段

731 阅读1分钟

项目github地址

Searcher

Searcher模块为golang提供了便捷的json字段访问, 此模块的接口将尽可能的简单易用

快速开始

安装

$ go get github.com/markity/searcher

用法

给定的json数据

var jsonString = `
{
  "name":"Markity",
  "age":"16",
  "friends":[
    {
      "name":"Jack",
      "age":17
	},
	{
	  "name":"Mary",
	  "age":18,
	  "email":"3402002560@qq.com"
	}
  ],
  "details":{
    "interests":["golang","python"]
  }
}
`

使用json数据创建一个searcher

import "github.com/markity/searcher"

// 若json数据不合法, 则error不为nil
s, err := searcher.New([]byte(jsonString))
if err != nil {
	fmt.Printf("invalid json data: %v", err)
	return
}

获取字段值

// 获取一个字段. 参数的类型必须为int或者string
result := s.Query("friends", 0, "name")

// 检查字段是否存在
if !result.Exists() {
    fmt.Println("the result does not exists")
    return
}

// 你可以判断字段的类型. 类型包括 TypeNumber, TypeBool, TypeString, TypeArray, TypeObject and TypeNull
if result.Type != searcher.TypeString {
    fmt.Println("wrong type of the field")
    return
}

// 你可以通过GetXXX方法获取字段真实值(GetInt64, GetUint64, GetFloat64, GetBool, GetString, GetObject, GetArray, GetValue)
// 在使用GetXXX方法前, 必须判断它的类型(使用了错误的"Get方法"将导致程序直接panic)
// 举例, 若result.Type是TypeNumber, 你可以使用 GetInt64, GetUint64 and GetFloat64
fmt.Printf("My first friend's name is %s\n", result.GetString())