Categorygithub.com/cfhamlet/os-jsonbind
modulepackage
0.0.1
Repository: https://github.com/cfhamlet/os-jsonbind.git
Documentation: pkg.go.dev

# README

os-jsonbind

Extract data with JSON schema

This library extend json schema, you can predefine standard json schema with extend tags, which can be used for extract data from source data(bytes) and create new data for json

Install

go get github.com/cfhamlet/os-jsonbind

Usage

  • source data

    srcData := []byte(`{"k1": 1, "k2": "v2", "k3": [2,3,4], "k4": {"i1": 5, "i2": true}}`) // json bytes
    
  • define a json schema of the target object with "bind" key, value is path string of the source data

    spec := []byte(`{"properties": {"K": {"type": "number", "bind": "k1"}}}`) // "k1" gjson style
    
  • create a binder with the schema

    import "github.com/cfhamlet/os-jsonbind"
    
    binder, err := jsonbind.Compile(spec)
    
  • extract data from source data, return target result, binded flag and error

    result, binded, err := binder.Bind(context.Background(), srcData)
    // result is map[string]interface{}{"K": 1}
    // binded is true
    // err is null
    

Rule Syntax

The default rule type is gjson, you can specify other syntax with rule name as prefix

"bind": "ajson:$.k1"

Supported syntax rule types:

License

MIT licensed.

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author

# Type aliases

No description provided by the author
No description provided by the author
No description provided by the author