Skip to content

Latest commit

 

History

History
36 lines (26 loc) · 1.19 KB

README.md

File metadata and controls

36 lines (26 loc) · 1.19 KB

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}
  
}