Decoding Struct to Map with Embedded pointer to Struct

Author: dima-koniaiev-solidCreated Mar 26, 2024Updated Mar 26, 2024

Hey, everyone! I still can reproduce the problem with decoding the embedded pointer from this issue. Here is the code to reproduce the problem:

Expected result: map[B:map[Name:]] Actual result: map[B:0x14000132000]

go
package main

import (
	"github.com/mitchellh/mapstructure"
	"log"
)

func main() {
	testMap := make(map[string]interface{})
	a := A{&B{}}
	err := mapstructure.Decode(a, &testMap)

	if err != nil {
		panic(err)
	}

	log.Println(testMap)
}

type A struct {
	B *B
}

type B struct {
	Name string
}

If you update this B struct to the following one everything works as expected:

go
type B struct {
	Test string `mapstructure:",omitempty"`
	Name string
}