Categorygithub.com/xiatechs/jsonata-go
modulepackage
1.8.7
Repository: https://github.com/xiatechs/jsonata-go.git
Documentation: pkg.go.dev

# README

JSONata in Go

Package jsonata is a query and transformation language for JSON. It's a Go port of the JavaScript library JSONata.

It currently has feature parity with jsonata-js 1.5.4. As well as a most of the functions added in newer versions. You can see potentially missing functions by looking at the jsonata-js changelog.

Install

go get github.com/xiatechs/jsonata-go

Usage

import (
	"github.com/goccy/go-json"
	"fmt"
	"log"

	jsonata "github.com/xiatechs/jsonata-go"
)

const jsonString = `
    {
        "orders": [
            {"price": 10, "quantity": 3},
            {"price": 0.5, "quantity": 10},
            {"price": 100, "quantity": 1}
        ]
    }
`

func main() {

	var data interface{}

	// Decode JSON.
	err := json.Unmarshal([]byte(jsonString), &data)
	if err != nil {
		log.Fatal(err)
	}

	// Create expression.
	e := jsonata.MustCompile("$sum(orders.(price*quantity))")

	// Evaluate.
	res, err := e.Eval(data)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(res)
	// Output: 135
}

JSONata Server

A locally hosted version of JSONata Exerciser for testing is available here.

JSONata tests

A CLI tool for running jsonata-go against the JSONata test suite is available here.

Contributing

We love issues, fixes, and pull requests from everyone. Please run the unit-tests, staticcheck, and goimports prior to submitting your PR. By participating in this project, you agree to abide by the Blues Inc code of conduct.

For details on contributions we accept and the process for contributing, see our contribution guide.

In addition to the Go unit tests there is also a test runner that will run against the jsonata-js test suite in the jsonata-test directory. A number of these tests currently fail, but we're working towards feature parity with the jsonata-js reference implementation. Pull requests welcome!

If you would like to contribute to this library a good first issue would be to run the jsonata-test suite, and fix any of the tests not passing.

# Packages

No description provided by the author
Package jlib implements the JSONata function library.
Package jparse converts JSONata expressions to abstract syntax trees.
No description provided by the author
No description provided by the author
Package jtypes provides types and utilities for third party extension functions.

# Functions

Compile parses a JSONata expression and returns an Expr that can be evaluated against JSON data.
MustCompile is like Compile except it panics if given an invalid expression.
No description provided by the author
RegisterExts registers custom functions for use in JSONata expressions.
RegisterVars registers custom variables for use in JSONata expressions.
No description provided by the author

# Constants

Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.
Types of errors that may be encountered by JSONata.

# Variables

ErrUndefined is returned by the evaluation methods when a JSONata expression yields no results.

# Structs

ArgCountError is returned by the evaluation methods when an expression contains a function call with the wrong number of arguments.
ArgTypeError is returned by the evaluation methods when an expression contains a function call with the wrong argument type.
An EvalError represents an error during evaluation of a JSONata expression.
An Expr represents a JSONata expression.
An Extension describes custom functionality added to a JSONata expression.
No description provided by the author

# Type aliases

ErrType indicates the reason for an error.