Skip to content

Instantly share code, notes, and snippets.

@jtprogru
Last active May 19, 2022 07:23
Show Gist options
  • Save jtprogru/adf67c1f552b6f0149a554555aeaaa8f to your computer and use it in GitHub Desktop.
Save jtprogru/adf67c1f552b6f0149a554555aeaaa8f to your computer and use it in GitHub Desktop.
Данная задача ориентирована на реальную работу с данными в формате JSON. Для решения мы будем использовать справочник ОКВЭД (Общероссийский классификатор видов экономической деятельности), который был размещен на web-портале data.gov.ru.
{
"comment": "Данные в сыром виде доступны для скачивания по адресу",
"url": "https://raw.githubusercontent.com/semyon-dev/stepik-go/master/work_with_json/data-20190514T0100.json"
}
package main
import (
"encoding/json"
"fmt"
"net/http"
)
/*
Данная задача ориентирована на реальную работу с данными в формате JSON. Для решения мы будем
использовать справочник ОКВЭД (Общероссийский классификатор видов экономической деятельности),
который был размещен на web-портале data.gov.ru.
Необходимая вам информация о структуре данных содержится в файле structure-20190514T0000.json,
а сами данные, которые вам потребуется декодировать, содержатся в файле data-20190514T0100.json.
Файлы размещены в https://github.com/semyon-dev/stepik-go/tree/master/work_with_json.
Для того, чтобы показать, что вы действительно смогли декодировать документ вам необходимо в
качестве ответа записать сумму полей global_id всех элементов, закодированных в файле.
*/
type Item struct {
SystemObjectId string `json:"system_object_id"`
Kod string `json:"Kod"`
IsDeleted int `json:"is_deleted"`
SignatureDate string `json:"signature_date"`
Nomdescr string `json:"Nomdescr"`
GlobalId int `json:"global_id"`
Idx string `json:"Idx"`
Razdel string `json:"Razdel"`
Name string `json:"Name"`
}
func main() {
const URL = "https://raw.githubusercontent.com/semyon-dev/stepik-go/master/work_with_json/data-20190514T0100.json"
rs, err := http.Get(URL)
if err != nil {
panic(err)
}
defer rs.Body.Close()
dec := json.NewDecoder(rs.Body)
var items []Item
err = dec.Decode(&items)
if err != nil {
panic(err)
}
sum := 0
for _, x := range items {
sum += x.GlobalId
}
fmt.Println(sum)
// 763804981288
}
{
"minItems":1,
"$schema":"http://json-schema.org/draft-04/schema#",
"description":"Общероссийский классификатор видов экономической деятельности ОКВЭД 2 (ОК 029-2014 (КДЕС Ред. 2))",
"title":"Общероссийский классификатор видов экономической деятельности ОКВЭД 2 (ОК 029-2014 (КДЕС Ред. 2))",
"type":"array",
"items":{
"description":"Общероссийский классификатор видов экономической деятельности ОКВЭД 2 (ОК 029-2014 (КДЕС Ред. 2))",
"type":"object",
"properties":{
"system_object_id":{
"description":"system_object_id",
"type":"STRING"
},"Kod":{
"description":"Код позиции",
"type":"STRING"
},"is_deleted":{
"description":"is_deleted",
"type":"NUMBER"
},"signature_date":{
"description":"signature_date",
"type":"STRING"
},"Nomdescr":{
"description":"Описание",
"type":"STRING"
},"global_id":{
"description":"global_id",
"type":"NUMBER"
},"Idx":{
"description":"Индекс",
"type":"STRING"
},"Razdel":{
"description":"Код раздела",
"type":"STRING"
},"Name":{
"description":"Наименование",
"type":"STRING"
}
},"required":["is_deleted","global_id","Idx"]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment