Skip to content

Configurations

Saddam H edited this page Jul 12, 2018 · 6 revisions

Custom JSON decoder

Sometime you may prefer to use the third party JSON decoder over GO's default JSON decoder.

From gojsonq version v1.6 custom JSON decoder can be used, in order to use custom decoder you have to pass the decoder as option.

See example below:

package main

import (
	"fmt"

	"github.com/davecgh/go-spew/spew"
	jsoniter "github.com/json-iterator/go"
	"github.com/pquerna/ffjson/ffjson"
	"github.com/thedevsaddam/gojsonq"
)

func main() {
	jq := gojsonq.New(gojsonq.SetDecoder(&iteratorDecoder{})).
		File("./data.json").
		From("vendor.items").
		Where("id", "=", 1).OrWhere("id", "=", 3)

	spew.Dump("Result: ", jq.Only("name", "id"), jq.Error())
}

type iteratorDecoder struct {
}

func (i *iteratorDecoder) Decode(data []byte, v interface{}) error {
	var json = jsoniter.ConfigCompatibleWithStandardLibrary
	return json.Unmarshal(data, &v)
}

type ffDecoder struct {
}

func (f *ffDecoder) Decode(data []byte, v interface{}) error {
	return ffjson.Unmarshal(data, &v)
}