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 дают противоречивые выводы...

0 ответов

Другие вопросы по тегам