jsn

package
v0.21.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2022 License: Apache-2.0 Imports: 9 Imported by: 0

README

JSN - Fast low allocation JSON library

Design

This libary is designed as a set of seperate functions to extract data and mutate JSON. All functions are focused on keeping allocations to a minimum and be as fast as possible. The functions don't validate the JSON a seperate Validate function does that.

The JSON parsing algo processes each object {} or array [] in a bottom up way where once the end of the array or object is found only then the keys within it are parsed from the top down.

{"id":1,"posts": [{"title":"PT1-1","description":"PD1-1"}], "full_name":"FN1","email":"E1" }

id: 1

posts: [{"title":"PT1-1","description":"PD1-1"}]

[{"title":"PT1-1","description":"PD1-1"}]

{"title":"PT1-1","description":"PD1-1"}

title: "PT1-1"

description: "PD1-1

full_name: "FN1"

email: "E1"

Functions

  • Strip: Strip a path from the root to a child node and return the rest
  • Replace: Replace values by key
  • Get: Get all keys
  • Filter: Extract specific keys from an object
  • Tree: Fetch unique keys from an array or object

Documentation

Overview

Package jsn provides fast and no-allocation functions to extract values and modify JSON data

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Clear

func Clear(w *bytes.Buffer, v []byte) error

Clear function wipes all scalar values from the json including those directly in an array

func Filter

func Filter(w *bytes.Buffer, b []byte, keys []string) error

Filter function filters the JSON keeping only the provided keys and removing all others

func Keys

func Keys(b []byte) [][]byte

Keys function fetches all the unique keys in the JSON data in order of their occurrence

func Replace

func Replace(w *bytes.Buffer, b []byte, from, to []Field) error

Replace function replaces key-value pairs provided in the `from` argument with those in the `to` argument

func Strip

func Strip(b []byte, path [][]byte) []byte

Strip function strips out all values from the JSON data expect for the provided path

func Tree

func Tree(v []byte) (map[string]json.RawMessage, bool, error)

func Validate

func Validate(s string) error

Validate function validates JSON

func ValidateBytes

func ValidateBytes(b []byte) error

ValidateBytes validates JSON b.

func Value

func Value(b []byte) []byte

Value function is a utility function to sanitize returned values

Types

type Field

type Field struct {
	Key   []byte
	Value []byte
}

Field struct holds a JSON key and value

func Get

func Get(b []byte, keys [][]byte) []Field

Keys function fetches values for the provided keys

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL