a Go package to search for JSON value and interact with arbitrary JSON 。
用于搜索JSON值并与任意JSON交互的go 语言json 库。
go get -u github.com/ymex/go-kson
采用链式函数结构保持代码简洁,
- 别名
查找的key可以使用:来定义别名。如,result:data ,那么在结果 集中,result 就是data 的别名。
- 数组
查找数组时使用[] 
- 多级查找
多级查找用->表示。 如,"result->books[2]->title" 表示查找 result 对象下数组books 的第二个元素对象的title.
- 条件查找[暂未支持]
条件查找仅支持 ==,!=,>,<,>=,<= ,查找内容放在{}中间。如students->{age>24}
1,若使用有以下json作为查询源:
b :=[]byte(`{
 "code":200,
 "message":"success",
 "data":{
    "busId":24,
    "mileage":253.56,
    "passenger":{
        "students":[
            [{"name":"Bili","age":16},{"name":"Celina","age":17},{"name":"Serafina","age":18}],
            [{"name":"Abby","age":19},{"name":"Amaris","age":20},{"name":"Fiona","age":21}],
            [{"name":"Snow","age":24},{"name":"Muse","age":23},{"name":"Gina","age":22}]
        ],
        "teachers":[
         {
            "name":"Tom",
            "age":37,
            "teach":"math"
         },
          {
            "name":"Li",
            "age":37,
            "teach":"math"
         }
        ]
    }
 }
}`)
2,首先我们得到结果集
kson := Unmarshal(b).Find("code","last:data->mileage","message","result:data->passenger->students[0][1]")
3,从结果集中取出所需要的值
kson.GotFirst().ToInt()        //>> 200
kson.GotPosition(1).ToFloat()  //>> 253.56
kson.Got("last").ToFloat()     //>> 253.56
kson.Got("message").ToString() //>> success
kson.GotLast().Interface()     //>> map[name:Celina age:17]
kson.Got("result").Interface() //>> map[name:Celina age:17]