Skip to content

Provide types that allows to determine if a JSON key has been set to null or not provided

License

Notifications You must be signed in to change notification settings

kernle32dll/nullable

 
 

Repository files navigation

Build Status GoDoc Go Report Card codecov

nullable

Provides ability to determine if a json key has been set to null or not provided. Inspired by How to determine if a JSON key has been set to null or not provided article by Jon Calhoun

Install

To get the package, execute:

go get github.com/kernle32dll/nullable

To import this package, add the following line to your code:

import "github.com/kernle32dll/nullable"

Refer to it as nullable.

For more details, see the API documentation.

Example

import "github.com/kernle32dll/nullable"

func main() {
	usr := struct {
		Name nullable.String `json:"name"`
	}{}

	data := []byte("{}")
	if err := json.Unmarshal(data, &usr); err != nil {
		log.Fatalf("unmarshaling failed: %s\n", err)
	}

	fmt.Println(usr.Name.Present) // false
	fmt.Println(usr.Name.Valid)   // false
	fmt.Println(usr.Name.Value)   // ""

	data = []byte("{\"name\":null}")
	if err := json.Unmarshal(data, &usr); err != nil {
		log.Fatalf("unmarshaling failed: %s\n", err)
	}

	fmt.Println(usr.Name.Present) // true
	fmt.Println(usr.Name.Valid)   // false
	fmt.Println(usr.Name.Value)   // ""

	data = []byte("{\"name\":\"John\"}")
	if err := json.Unmarshal(data, &usr); err != nil {
		log.Fatalf("unmarshaling failed: %s\n", err)
	}

	fmt.Println(usr.Name.Present) // true
	fmt.Println(usr.Name.Valid)   // true
	fmt.Println(usr.Name.Value)   // "John"
}

Contributing

Please feel free to submit issues, fork the repository and send pull requests!

About

Provide types that allows to determine if a JSON key has been set to null or not provided

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%