Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/elgs/jsonql
JSON query expression library in Golang.
https://github.com/elgs/jsonql
Last synced: 24 days ago
JSON representation
JSON query expression library in Golang.
- Host: GitHub
- URL: https://github.com/elgs/jsonql
- Owner: elgs
- License: other
- Created: 2015-12-29T11:24:04.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-11-20T03:19:00.000Z (over 3 years ago)
- Last Synced: 2024-01-31T05:49:38.687Z (4 months ago)
- Language: Go
- Homepage:
- Size: 42 KB
- Stars: 272
- Watchers: 12
- Forks: 40
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go-extra - jsonql - 12-29T11:24:04Z|2020-11-20T03:19:00Z| (Query Language / HTTP Clients)
- awesome-go-cn - jsonql
- awesome-go-zh - jsonql
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go-cn - jsonql
- awesome-go - jsonql - | (Query Language / HTTP Clients)
- fucking-awesome-go - :octocat: jsonql - JSON query expression library in Golang. :star: 53 :fork_and_knife: 3 (Query Language / Advanced Console UIs)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go-projects - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / Advanced Console UIs)
- awesome-go-with-framework - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- zero-alloc-awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go-cn - jsonql
- awesome-go-stars - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go. - jsonql - JSON query expression library in Golang. (Query Language / Advanced Console UIs)
- awesome-go - jsonql - JSON query expression library in Golang. (<span id="查询语言-query-language">查询语言 Query Language</span> / <span id="高级控制台用户界面-advanced-console-uis">高级控制台用户界面 Advanced Console UIs</span>)
- awesome-go-cn - jsonql - JSON 查询表达式库 (查询语言 / 高级控制台界面)
- awesome-star - elgs/jsonql
- awesome-go-with-stars - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- repo-1316-awesome-go-cn - jsonql
- repo-1211-awesome-go-cn - jsonql
- awesome-Char - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-reader - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- Go-awesome - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go-cn - jsonql
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / Advanced Console UIs)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / Advanced Console UIs)
- go-awesome-cn-star - jsonql
- awesome-go-zh - jsonql
- awesome-go-handwritten - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON 查詢表達式庫 (查詢語言 / 高級控制台界面)
- awesome-go - jsonql - JSON query expression library in Golang. - ★ 177 (Query Language)
- awesome-go2 - jsonql - JSON query expression library in Golang. (Query Language / Advanced Console UIs)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / Advanced Console UIs)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. - :arrow_down:2 - :star:63 (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go-cn - jsonql
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
- awesome-go - jsonql - JSON query expression library in Golang. (Query Language / HTTP Clients)
README
# jsonql
JSON query expression library in Golang.This library enables query against JSON. Currently supported operators are: (precedences from low to high)
```
||
&&
= != > < >= <= ~= !~= is isnot contains
+ -
* / %
^
( )
```The following are the operator mapings to SQL:
* `AND` to `&&`
* `OR` to `||`
* `RLIKE` to `~=`
* `NOT RLIKE` to `!~=`## Install
`go get -u github.com/elgs/jsonql`## Example
```go
package mainimport (
"fmt""github.com/elgs/jsonql"
)var jsonString = `
[
{
"name": "elgs",
"gender": "m",
"age": 35,
"skills": [
"Golang",
"Java",
"C"
]
},
{
"name": "enny",
"gender": "f",
"age": 36,
"hobby": null,
"skills": [
"IC",
"Electric design",
"Verification"
]
},
{
"name": "sam",
"gender": "m",
"age": 1,
"hobby": "dancing",
"skills": [
"Eating",
"Sleeping",
"Crawling"
]
}
]
`func main() {
parser, err := jsonql.NewStringQuery(jsonString)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(parser.Query("name='elgs'"))
//[map[skills:[Golang Java C] name:elgs gender:m age:35]]fmt.Println(parser.Query("name='elgs' && gender='f'"))
//[]fmt.Println(parser.Query("age<10 || (name='enny' && gender='f')"))
// [map[hobby: skills:[IC Electric design Verification] name:enny gender:f age:36] map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]]fmt.Println(parser.Query("age<10"))
// [map[gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling] name:sam]]fmt.Println(parser.Query("1=0"))
//[]fmt.Println(parser.Query("age=(2*3)^2"))
//[map[skills:[IC Electric design Verification] name:enny gender:f age:36 hobby:]]fmt.Println(parser.Query("name ~= 'e.*'"))
// [map[name:elgs gender:m age:35 skills:[Golang Java C]] map[hobby: skills:[IC Electric design Verification] name:enny gender:f age:36]]fmt.Println(parser.Query("name='el'+'gs'"))
fmt.Println(parser.Query("age=30+5.0"))
fmt.Println(parser.Query("age=40.0-5"))
fmt.Println(parser.Query("age=70-5*7"))
fmt.Println(parser.Query("age=70.0/2.0"))
fmt.Println(parser.Query("age=71%36"))
// [map[name:elgs gender:m age:35 skills:[Golang Java C]]]fmt.Println(parser.Query("hobby is defined"))
// [map[name:enny gender:f age:36 hobby: skills:[IC Electric design Verification]] map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]]fmt.Println(parser.Query("hobby isnot defined"))
// [map[name:sam gender:m age:1 skills:[Eating Sleeping Crawling]]]fmt.Println(parser.Query("hobby is null"))
// [map[hobby: skills:[IC Electric design Verification] name:enny gender:f age:36]]fmt.Println(parser.Query("hobby isnot null"))
// [map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]]fmt.Println(parser.Query("skills contains 'Eating'"))
// [map[age:1 gender:m hobby:dancing name:sam skills:[Eating Sleeping Crawling]]]
}
```## Query Expressions
For details of query expressions, please read: https://github.com/elgs/gojq