Всем привет.
Есть задача.
Есть очередь, в которую сыпятся таски разных типов, на которые уникально указывает свойство 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)
}
}
Спасибо, что дочитали этот код до конца :-)