func getObj(info string) (map[string]interface{}, error) {
b := []byte(info)
var dat map[string]interface{}
if err := json.Unmarshal(b, &dat); err != nil {
return dat, errors.New("json parsing error")
}
return dat, nil
}
Реализация распарсивания.
func main() {
var content string
content = `{"Surname":"Иванов","Age":14,"School":{"Number":218,"Description":"Математическая школа"}}`
var m map[string]interface{}
m, e := getObj(content)
if e == nil {
var surname string
var age int
surname = m["Surname"].(string)
age = int(m["Age"].(float64))
fmt.Println("Фамилия:", surname)
fmt.Println("Возраст:", age)
m2 := m["School"].(map[string]interface{})
var number int
var description string
number = int(m2["Number"].(float64))
description = m2["Description"].(string)
fmt.Println("Номер школы:", number)
fmt.Println("Описание школы:", description)
} else {
fmt.Println(e)
}
}
func getArr(info string) ([]interface{}, error) {
b := []byte(info)
var dat []interface{}
if err := json.Unmarshal(b, &dat); err != nil {
return dat, errors.New("json parsing error")
}
return dat, nil
}
Реализация распарсивания.
func main() {
var content string
content = `[{"a":"Maxim", "b":12},{"a":"Nina", "b":17},{"a":"Alex", "b":15}]`
var m []interface{}
m, e := getArr(content)
if e == nil {
for i := 0; i < len(m); i++ {
m2 := m[i].(map[string]interface{})
var a string
var b int
a = m2["a"].(string)
b = int(m2["b"].(float64))
fmt.Println(a, b)
}
} else {
fmt.Println(e)
}
}