• Stars
    star
    192
  • Rank 194,869 (Top 4 %)
  • Language
    Go
  • License
    Other
  • Created over 8 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

JSON query in Golang

gojq

JSON query in Golang.

Install

go get -u github.com/elgs/gojq

This library serves three purposes:

  • makes parsing JSON configuration file much easier
  • enables JSON expression evaluation
  • reduces the pain of type assertion parsing JSON

Query from JSON Object

package main

import (
	"fmt"

	"github.com/elgs/gojq"
)

var jsonObj = `
{
  "name": "sam",
  "gender": "m",
  "pet": null,
  "skills": [
    "Eating",
    "Sleeping",
    "Crawling"
  ],
  "hello.world":true
}
`

func main() {
	parser, err := gojq.NewStringQuery(jsonObj)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(parser.Query("name"))          // sam <nil>
	fmt.Println(parser.Query("gender"))        // m <nil>
	fmt.Println(parser.Query("skills.[1]"))    // Sleeping <nil>
	fmt.Println(parser.Query("hello"))         // <nil> hello does not exist.
	fmt.Println(parser.Query("pet"))           // <nil> <nil>
	fmt.Println(parser.Query("."))             // map[name:sam gender:m pet:<nil> skills:[Eating Sleeping Crawling] hello.world:true] <nil>
	fmt.Println(parser.Query("'hello.world'")) // true <nil>
}

Query from JSON Array

package main

import (
	"fmt"
	"github.com/elgs/gojq"
)

var jsonArray = `
[
  {
    "name": "elgs",
    "gender": "m",
    "skills": [
      "Golang",
      "Java",
      "C"
    ]
  },
  {
    "name": "enny",
    "gender": "f",
    "skills": [
      "IC",
      "Electric design",
      "Verification"
    ]
  },
  {
    "name": "sam",
    "gender": "m",
	"pet": null,
    "skills": [
      "Eating",
      "Sleeping",
      "Crawling"
    ]
  }
]
`

func main() {
	parser, err := gojq.NewStringQuery(jsonArray)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(parser.Query("[0].name"))       // elgs <nil>
	fmt.Println(parser.Query("[1].gender"))     // f <nil>
	fmt.Println(parser.Query("[2].skills.[1]")) // Sleeping <nil>
	fmt.Println(parser.Query("[2].hello"))      // <nil> hello does not exist.
	fmt.Println(parser.Query("[2].pet"))        // <nil> <nil>
}

Nested Query

package main

import (
	"fmt"
	"github.com/elgs/gojq"
)

var jsonArray = `
[
  {
    "name": "elgs",
    "gender": "m",
    "skills": [
      "Golang",
      "Java",
      "C"
    ]
  },
  {
    "name": "enny",
    "gender": "f",
    "skills": [
      "IC",
      "Electric design",
      "Verification"
    ]
  },
  {
    "name": "sam",
    "gender": "m",
	"pet": null,
    "skills": [
      "Eating",
      "Sleeping",
      "Crawling"
    ]
  }
]
`

func main() {
	parser, err := gojq.NewStringQuery(jsonArray)
	if err != nil {
		fmt.Println(err)
		return
	}
	samSkills, err := parser.Query("[2].skills")
	fmt.Println(samSkills, err) //[Eating Sleeping Crawling] <nil>
	samSkillParser := gojq.NewQuery(samSkills)
	fmt.Println(samSkillParser.Query("[1]")) //Sleeping <nil>
}

More Repositories

1

jsonql

JSON query expression library in Golang.
Go
273
star
2

dns-zonefile

A DNS zone file generator and parser written in Javascript.
JavaScript
153
star
3

gosqljson

A Go library to work with SQL database
Go
63
star
4

filesync

Filesync is a utility written in Golang which helps you to keep the files on the client up to date with the files on the server.
Go
60
star
5

leanweb

Builds framework agnostic web components.
JavaScript
48
star
6

gosqlapi

Turns any SQL database into a RESTful API.
Go
40
star
7

ip6

IPv6 address helper utilities.
JavaScript
19
star
8

splitargs

Splits strings into tokens by given separator, treating quoted part as a single token.
JavaScript
17
star
9

gostrgen

Random string generator in Golang.
Go
16
star
10

nproxy

A nodejs proxy server.
JavaScript
10
star
11

parse5

Ported from inikulin/parse5 but for Deno.
JavaScript
9
star
12

gosqlcrud

A Go library to work with SQL database using standard `database/sql` api. It supports SQL to array/maps/structs, and CRUD operations on structs.
Go
8
star
13

FSK

This is an iOS based signal generator.
Objective-C
7
star
14

azui

A set of more desktop/mobile/touchscreen friendly web UI components.
JavaScript
7
star
15

gproxy

Go Proxy
Go
7
star
16

vpn-route

Sometime you just need it. F*** GFW.
6
star
17

curl-parser

curl command parser.
JavaScript
6
star
18

MyNotes

A collection of my frequently used scripts.
C++
4
star
19

mf_proxmox_kvm_scripts

Scripts for kvm templates for Modules Factory Proxmox WHMCS modules.
Shell
4
star
20

gorest

A restful framework in Golang.
Go
3
star
21

yotta-node

Yotta DB is a local file based key value database, written in Node.js.
JavaScript
3
star
22

optional

If you think if err != nil is too much, this might be for you.
Go
3
star
23

goweb

Multi domain/host web server written in Golang.
Go
3
star
24

metal_gpu

Working with Metal GPU in C++ and Swift
C++
2
star
25

url_shortener

Yet another url shortener.
JavaScript
2
star
26

gosplitargs

Splits strings into tokens by given separator except treating quoted part as a single token.
Go
2
star
27

mnist-view

View mnist images in command line, in Deno
TypeScript
2
star
28

images

CNN Proof of Concept.
JavaScript
2
star
29

wsl

Web SQL Lite (Golang)
Go
2
star
30

ip6.sh

ip6.sh website.
JavaScript
2
star
31

dnd

drag and drop
JavaScript
1
star
32

website-seed

Web site seed.
CSS
1
star
33

cpp_code

CPP code.
C++
1
star
34

leanweb-pub-sub-demo

This project demonstrates how Leanweb helps web components to talk to each other.
JavaScript
1
star
35

gr

A go restful service, extensible by interceptors.
Go
1
star
36

sso-client

SSO client app powered by Leanweb.
JavaScript
1
star
37

jwt

JWT encoder/decoder/verifier.
Go
1
star
38

exparser

An expression parser.
Go
1
star
39

jsstrgen

Random string generator in Javascript.
JavaScript
1
star
40

go

Go game with reinforcement learning.
C++
1
star
41

server_monitor

Server monitor project based on Net Data.
Shell
1
star
42

sso

SSO login app powered by Leanweb.
JavaScript
1
star
43

gorediscache

Go redis cache.
Go
1
star
44

ann

Artificial Neural Network Proof of Concept
TypeScript
1
star
45

websql

Run SQL over the web - Backend made easier.
Go
1
star
46

maze

An experimental project for reinforcement learning.
C++
1
star
47

dataslots

http/websocket data slots.
Go
1
star
48

secretrest

secretrest
C
1
star
49

nn

World simplest neural network.
C++
1
star
50

ui

A css only ui library.
JavaScript
1
star
51

netdata

Backend of netdata.io.
Go
1
star
52

sgf2go-cpp

SGF Go game parser and generator.
C++
1
star
53

gammu-gateway

A gammu SMS service gateway.
Go
1
star
54

large-comments

A VS Code plugin that generate large comments.
TypeScript
1
star
55

leanweb.app

leanweb.app website source code.
JavaScript
1
star
56

wsld

wsl daemon
Go
1
star
57

archlinux_scripts

Arch Linux Scripts
Shell
1
star
58

netdata2

An SQL backend for the web.
Go
1
star
59

signal

A command and broadcast based multi channel message hub.
Go
1
star
60

sgf2go

SGF Go game parser and generator.
JavaScript
1
star
61

gorest2

This is to continue gorest with incompatible changes.
Go
1
star
62

broc

Bring your own cloud.
Go
1
star
63

ppw

Pixel Perfect Works.
JavaScript
1
star