Всем привет.
Есть задача.
Есть очередь, в которую сыпятся таски разных типов, на которые уникально указывает свойство alias в json-таске.
В задаче также содержится свойство data, в котором содержится guid задачи и поле properties, в котором лежит произвольный объект, необходимый для обработки задачи.
Вот такой код нормален для разбора json? Естественно, в будущем структуры данных, кроме глобальной Task, переедут по отдельным файлам вместе с логикой их обработки.
package main
import (
	"encoding/json"
	"fmt"
)
type Task struct {
	Alias string
}
type FootballTaskDataProperties struct {
	A int
	B int
	C int
	D int
}
type FootballTaskData struct {
	Guid       string
	Properties FootballTaskDataProperties
}
type FootballTask struct {
	Alias string
	Data  FootballTaskData
}
func main() {
	var item Task
	var jsonData = []byte(`{"alias":"football", "data": {"guid":"0aeaa197-44f5-4f73-a179-982cd2f0a52d", "properties": {"a":1,"b":97,"c":5,"d":0}, "Version":"4.7.1471"}}`)
	err := json.Unmarshal(jsonData, &item)
	if err != nil {
		fmt.Println("error:", err)
	}
	switch item.Alias {
	case "football":
		var currentStruct FootballTask
		json.Unmarshal(jsonData, ¤tStruct)
		fmt.Printf("\n%+v", currentStruct)
		fmt.Print(currentStruct.Data.Properties.A)
	}
}
Спасибо, что дочитали этот код до конца :-)