{"id":13413715,"url":"https://github.com/elgs/jsonql","last_synced_at":"2025-03-14T19:33:08.269Z","repository":{"id":56215759,"uuid":"48744241","full_name":"elgs/jsonql","owner":"elgs","description":"JSON query expression library in Golang.","archived":false,"fork":false,"pushed_at":"2020-11-20T03:19:00.000Z","size":43,"stargazers_count":274,"open_issues_count":5,"forks_count":40,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-07-31T20:52:46.990Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elgs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-29T11:24:04.000Z","updated_at":"2024-05-22T05:36:15.000Z","dependencies_parsed_at":"2022-08-15T14:50:32.161Z","dependency_job_id":null,"html_url":"https://github.com/elgs/jsonql","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgs%2Fjsonql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgs%2Fjsonql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgs%2Fjsonql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgs%2Fjsonql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elgs","download_url":"https://codeload.github.com/elgs/jsonql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243635790,"owners_count":20322999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:01:47.233Z","updated_at":"2025-03-14T19:33:07.996Z","avatar_url":"https://github.com/elgs.png","language":"Go","readme":"# jsonql\nJSON query expression library in Golang.\n\nThis library enables query against JSON. Currently supported operators are: (precedences from low to high)\n\n```\n||\n\u0026\u0026\n= != \u003e \u003c \u003e= \u003c= ~= !~= is isnot contains\n+ -\n* / %\n^\n( )\n```\n\nThe following are the operator mapings to SQL:\n* `AND` to `\u0026\u0026`\n* `OR`\tto `||`\n* `RLIKE` to `~=`\n* `NOT RLIKE` to `!~=`\n\n## Install\n`go get -u github.com/elgs/jsonql`\n\n## Example\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/elgs/jsonql\"\n)\n\nvar jsonString = `\n[\n  {\n    \"name\": \"elgs\",\n    \"gender\": \"m\",\n    \"age\": 35,\n    \"skills\": [\n      \"Golang\",\n      \"Java\",\n      \"C\"\n    ]\n  },\n  {\n    \"name\": \"enny\",\n    \"gender\": \"f\",\n    \"age\": 36,\n    \"hobby\": null,\n    \"skills\": [\n      \"IC\",\n      \"Electric design\",\n      \"Verification\"\n    ]\n  },\n  {\n    \"name\": \"sam\",\n    \"gender\": \"m\",\n    \"age\": 1,\n    \"hobby\": \"dancing\",\n    \"skills\": [\n      \"Eating\",\n      \"Sleeping\",\n      \"Crawling\"\n    ]\n  }\n]\n`\n\nfunc main() {\n\tparser, err := jsonql.NewStringQuery(jsonString)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tfmt.Println(parser.Query(\"name='elgs'\"))\n\t//[map[skills:[Golang Java C] name:elgs gender:m age:35]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"name='elgs' \u0026\u0026 gender='f'\"))\n\t//[] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"age\u003c10 || (name='enny' \u0026\u0026 gender='f')\"))\n\t// [map[hobby:\u003cnil\u003e skills:[IC Electric design Verification] name:enny gender:f age:36] map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"age\u003c10\"))\n\t// [map[gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling] name:sam]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"1=0\"))\n\t//[] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"age=(2*3)^2\"))\n\t//[map[skills:[IC Electric design Verification] name:enny gender:f age:36 hobby:\u003cnil\u003e]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"name ~= 'e.*'\"))\n\t// [map[name:elgs gender:m age:35 skills:[Golang Java C]] map[hobby:\u003cnil\u003e skills:[IC Electric design Verification] name:enny gender:f age:36]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"name='el'+'gs'\"))\n\tfmt.Println(parser.Query(\"age=30+5.0\"))\n\tfmt.Println(parser.Query(\"age=40.0-5\"))\n\tfmt.Println(parser.Query(\"age=70-5*7\"))\n\tfmt.Println(parser.Query(\"age=70.0/2.0\"))\n\tfmt.Println(parser.Query(\"age=71%36\"))\n\t// [map[name:elgs gender:m age:35 skills:[Golang Java C]]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"hobby is defined\"))\n\t// [map[name:enny gender:f age:36 hobby:\u003cnil\u003e skills:[IC Electric design Verification]] map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"hobby isnot defined\"))\n\t// [map[name:sam gender:m age:1 skills:[Eating Sleeping Crawling]]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"hobby is null\"))\n\t// [map[hobby:\u003cnil\u003e skills:[IC Electric design Verification] name:enny gender:f age:36]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"hobby isnot null\"))\n\t// [map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]] \u003cnil\u003e\n\n\tfmt.Println(parser.Query(\"skills contains 'Eating'\"))\n\t// [map[age:1 gender:m hobby:dancing name:sam skills:[Eating Sleeping Crawling]]] \u003cnil\u003e\n}\n```\n\n## Query Expressions\nFor details of query expressions, please read: https://github.com/elgs/gojq","funding_links":[],"categories":["Query Language","Misc","查询语言","Go语言包管理","Go","查詢語言","Relational Databases","\u003cspan id=\"查询语言-query-language\"\u003e查询语言 Query Language\u003c/span\u003e"],"sub_categories":["HTTP Clients","HTTP客户端","Advanced Console UIs","查询语","高級控制台界面","交流","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e","高级控制台界面"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felgs%2Fjsonql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felgs%2Fjsonql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felgs%2Fjsonql/lists"}