Categorygithub.com/json-iterator/tinygo
repositorypackage
0.0.0-20211221071957-84b5b690c8a0
Repository: https://github.com/json-iterator/tinygo.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

make json.Unmarshal work in tinygo

type NamedArray = []string

type RefNamedArray struct {
	Value NamedArray
}

import "encoding/json"

var val1 RefNamedArray
var val2 NamedArray
json.Unmarshal([]byte(`{ "Value": ["hello","world"] }`), &val1)
json.Unmarshal([]byte(`["hello","world"]`), &val2) 

The code above does not work in tinygo, due to incomplete runtime reflection support. To fix this, we use code generation instead of runtime reflection to implement json.Unmarshal

//go:generate go run github.com/json-iterator/tinygo/gen
type NamedArray = []string

//go:generate go run github.com/json-iterator/tinygo/gen
type RefNamedArray struct {
	Value NamedArray
}

import "github.com/json-iterator/tinygo"
// list all the types you need to unmarshal here
json := jsoniter.CreateJsonAdapter(RefNamedArray_json{}, NamedArray_json{}) 

var val1 RefNamedArray
var val2 NamedArray
json.Unmarshal([]byte(`{ "Value": ["hello","world"] }`), &val1)
json.Unmarshal([]byte(`["hello","world"]`), &val2) 

run go generate command to generate RefNamedArray_json and NamedArray_json.