Skip to content

Provide option for custom JSON decoder #17

@thedevsaddam

Description

@thedevsaddam

Option for user to provide custom JSON Decoder , like 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)
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions