@dima2308

Как корректно распарсить JSON (Golang)?

Имеется JSON вида:
data := []byte(`{
    "ID":134,
    "Number":"ИЛМ-1274",
    "Year":2,
    "Students":[
        {
            "LastName":"Вещий",
            "FirstName":"Лифон",
            "MiddleName":"Вениаминович",
            "Birthday":"4апреля1970года",
            "Address":"632432,г.Тобольск,ул.Киевская,дом6,квартира23",
            "Phone":"+7(948)709-47-24",
            "Rating":[1,2,3]
				}	
	]}`)


Требуется посчитать сумму элементов массива Rating для каждого студента.
Пытаюсь делать таким образом, но не понимаю, как получить доступ к элементам Rating?

package main

import (
	"encoding/json"
	"fmt"
)

type Students struct {
	Rating []int
}

type myStruct struct {
	Students []Students
}

func main() {
   var m myStruct
    
   if err := json.Unmarshal(temp_json, &m); err != nil {
		fmt.Println(err)
		return
	}
}


Здесь m - структура, по ней не могу итерироваться.
Подскажите, как исправить?
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
У вас m это структура, в которой есть элемент с ключом Students. По нему и нужно итерироваться
package main

import (
	"encoding/json"
	"fmt"
)

type Students struct {
	Rating []int
}

type myStruct struct {
	Students []Students
}

func main() {
	data := []byte(`{
    "ID":134,
    "Number":"ИЛМ-1274",
    "Year":2,
    "Students":[
        {
            "LastName":"Вещий",
            "FirstName":"Лифон",
            "MiddleName":"Вениаминович",
            "Birthday":"4апреля1970года",
            "Address":"632432,г.Тобольск,ул.Киевская,дом6,квартира23",
            "Phone":"+7(948)709-47-24",
            "Rating":[1,2,3]
        }	
  ]}`)

	var m myStruct

	if err := json.Unmarshal(data, &m); err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(m.Students)
	for _, student := range m.Students {
		fmt.Println(student.Rating)
	}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы