Skip to content

Instantly share code, notes, and snippets.

@mecitsemerci
Last active August 15, 2023 10:32
Show Gist options
  • Save mecitsemerci/dd81283b7003b367c6a771fa480abcfb to your computer and use it in GitHub Desktop.
Save mecitsemerci/dd81283b7003b367c6a771fa480abcfb to your computer and use it in GitHub Desktop.
JSON serialize and deserialize using go generics
package jsonconvert
import "encoding/json"
func Deserialize[T any](str string) (T, error) {
var d T
err := json.Unmarshal([]byte(str), &d)
if err != nil {
return d, err
}
return d, nil
}
func Serialize(obj any) (string, error) {
d, err := json.Marshal(obj)
if err != nil {
return "", err
}
return string(d), nil
}
@mecitsemerci
Copy link
Author

func main() {

	data := `{"id": 1001, "name": "Laptop"}`

	product, err := jsonconvert.Deserialize[Product](data)
	if err != nil {
		log.Println(err)
	}
	log.Println(product)

	str, err := jsonconvert.Serialize(product)
	if err != nil {
		log.Println(err)
	}
	log.Println(str)
}

Output

{1001 Laptop}
{"id":1001,"name":"Laptop"}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment