An open API service indexing awesome lists of open source software.

https://github.com/bww/go-json

A JSON marshaler/encoder which supports conditional exclusion of properties
https://github.com/bww/go-json

go json marshaler

Last synced: about 2 months ago
JSON representation

A JSON marshaler/encoder which supports conditional exclusion of properties

Awesome Lists containing this project

README

          

# Go JSON

This is a drop-in replacement JSON marshaler/encoder which supports the conditional exclusion of properties.

You can use this package instead of the standard library JSON package in cases where you want to control which properties are included in the marshaled result. This package is a modification of the standard library JSON encoder and should otherwise function exactly the same.

import (
"github.com/bww/json"
)

type Example struct {
A int `json:"a" roles:"public,private"`
B int `json:"b" roles:"private"`
C int `json:"c"`
}

func enc() {
var data []byte

ex := Example{
1, 2, 3,
}

// only properties with "public" or undefined roles are included
data, _ = json.MarshalRole("public", ex)
fmt.Println(string(data)) // {"a":1,"C",3}

// only properties with "private" or undefined roles are included
data, _ = json.MarshalRole("private", ex)
fmt.Println(string(data)) // {"a":1,"b":2,"c",3}

// for compatibility with encoding/json, roles are ignored
data, _ = json.Marshal(ex)
fmt.Println(string(data)) // {"a":1,"b":2,"c",3}

}