Golang распаковывает вложенный динамический объект JSON в структуру
У меня есть JSON в следующем формате:
{
"fieldA": {
"dynamicField": "string value",
"moreDynamicField": ["or", "array", "of", "strings"],
"allFieldsAreDynamic": "values in str or arr[str] only"
},
"fieldB": {
"dynamicField": "sameAsThoseInFieldA",
}
}
Внешние поля фиксированы, но значение каждого внешнего поля является динамическим объектом. Поэтому я попытался разобрать эти данные в следующую структуру Go:
type JsonData struct {
fieldA map[string]interface{}
fieldB map[string]interface{}
}
func main() {
var data JsonData
json.Unmarshal([]byte(`{"fieldA": {"x":"x", "y":["x","y"]}, "fieldB": {"a":"b", "c":"d"}}`), &data)
fmt.Println(data)
}
Однако приведенный выше код создает пустой массив Go без ошибок:
{map[] map[]}
. я тоже пробовал
fieldA map[string]map[string]any
но результат тот же.
Я не нашел полезной информации в документации пакета json об этой вложенной десортировке. Кроме того, будет ли падение производительности при использовании чистого
map[string]interface{}
для всех данных JSON? Некоторые сравнительные блоги и рассказы на Reddit дают противоречивые выводы...