Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func dynamicUnmarshal(text string) ([][]interface{}, error) {
- var data [][]json.RawMessage
- if err := json.Unmarshal(text, &data); err != nil {
- return nil, err
- }
- result := make([][]interface{}, len(data))
- for i, _ := range result {
- result[i] = make([]interface{}, len(data[i]))
- }
- for i, first := range data {
- for j, rawEntry := range first {
- var typeStruct struct {
- Type string `json:"type"`
- }
- if err := json.Unmarshal(rawEntry, &typeStruct); err != nil {
- return nil, err
- }
- switch typeStruct.Type {
- case "test":
- var decodeTo StructOne
- if err := json.Unmarshal(rawEntry, &decodeTo); err != nil {
- return nil, err
- }
- result[i][j] = decodeTo
- default:
- return nil, errors.New("unsupported type")
- }
- }
- }
- return result, nil
- }
Add Comment
Please, Sign In to add comment