Skip to content

Instantly share code, notes, and snippets.

@arxdsilva
Created October 1, 2019 19:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arxdsilva/30ba3df662f29a6ac7aa515451b1d4d7 to your computer and use it in GitHub Desktop.
Save arxdsilva/30ba3df662f29a6ac7aa515451b1d4d7 to your computer and use it in GitHub Desktop.
unmarshal unknown data
package main
// playground
// https://play.golang.org/p/dPmHZkw2QwB
import (
"fmt"
"encoding/json"
)
type emptyData struct {}
type emptyData2 interface{}
type fullJson struct {
Name string `json:"name"`
Data emptyData `json:"data"`
Data2 emptyData2 `json:"data2"`
}
func main() {
data := `{"data":{"abc":1},"data2":{"abc":1},"name":"arthur"}`
fj := &fullJson{}
err := json.Unmarshal([]byte(data), fj)
if err != nil {
fmt.Println("Hello, err: ", err)
}
fmt.Printf("Hello, data %+v\n", fj)
m, err := json.Marshal(fj.Data2)
if err != nil {
fmt.Println("Hello, err: ", err)
}
fmt.Printf("Hello, marshal %v\n", string(m))
}
// Hello, data &{Name:arthur Data:{} Data2:map[abc:1]}
// Hello, marshal {"abc":1}
// Program exited.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment