0 / 0 / 0
Регистрация: 07.10.2020
Сообщений: 13
1

Не могу найти ошибку в разборе JSON

13.04.2021, 19:32. Показов 4480. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно сам код, на выходе пустота.

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package main
 
import "os"
import "fmt"
import "net/http"
import "io/ioutil"
import "encoding/json"
 
type Location struct {
    Name       string
    Region       string
    Country       string
    Lat       string
    Lon       string
}
 
func get_content() {
    // json data
    url := "http://api.weatherapi.com/v1/forecast.json?key=d7f9e36099f54762802123333211004&q=Saint-Petersbur"
 
    res, err := http.Get(url)
    
    //fmt.Println(res)
 
    if err != nil {
        panic(err.Error())
    }
 
    body, erro := ioutil.ReadAll(res.Body)
 
    if erro != nil {
        panic(err.Error())
    }
    
    var data Location
    json.Unmarshal(body, &data)
    
    fmt.Printf("Results: %v\n", data.Name)
    
    os.Exit(0)
}
 
func main() {
    get_content()
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2021, 19:32
Ответы с готовыми решениями:

Не могу найти ошибку в коде с модулем json
Всем привет! Читаю книгу Эрика Мэтиза. Была задача: Спросить у пользователя число и записать у файл...

Вывод данных из БД (JSON) в приложение. Не могу найти ошибку
Есть код, вроде правыльный, но данные не выводи. Гляньте, может кто-то поймёт в чём ошибка. Вывод...

Найти ошибку в разборе строки
Написал код, только сильно не пинайте и громко не смейтесь=)) программка чисто для практики, писал...

Ошибка "Unexpected JSON token when reading DataTable" при разборе JSON в массив
Подскажите как при помощи этого класса получить массив пользователей из такой формы: ...

5
Эксперт функциональных языков программированияЭксперт Java
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
13.04.2021, 20:23 2
ESKESK, ну так ты документ посмотри по ссылке. Там есть поле "location". Где оно в твоей структуре?

Добавлено через 24 минуты
А ещё json.Unmarshal возвращает ошибку, которую ты просто игнорируешь. Ты в блокноте код пишешь, что ли?
1
0 / 0 / 0
Регистрация: 07.10.2020
Сообщений: 13
13.04.2021, 20:35  [ТС] 3
korvin_, в notepadqq

Я разобрал XML фид через онлайн разборщика, самого бота написал уже, ниже привожу саму структуру файла.
А как должна выглядеть структура JSON ?


Код
type Root struct {
	XMLName  xml.Name `xml:"root"`
	Text     string   `xml:",chardata"`
	Location struct {
		Text           string `xml:",chardata"`
		Name           string `xml:"name"`
		Region         string `xml:"region"`
		Country        string `xml:"country"`
		Lat            string `xml:"lat"`
		Lon            string `xml:"lon"`
		TzID           string `xml:"tz_id"`
		LocaltimeEpoch string `xml:"localtime_epoch"`
		Localtime      string `xml:"localtime"`
	} `xml:"location"`
	Current struct {
		Text             string `xml:",chardata"`
		LastUpdatedEpoch string `xml:"last_updated_epoch"`
		LastUpdated      string `xml:"last_updated"`
		TempC            string `xml:"temp_c"`
		TempF            string `xml:"temp_f"`
		IsDay            string `xml:"is_day"`
		Condition        struct {
			Chardata string `xml:",chardata"`
			Text     string `xml:"text"`
			Icon     string `xml:"icon"`
			Code     string `xml:"code"`
		} `xml:"condition"`
		WindMph    string `xml:"wind_mph"`
		WindKph    string `xml:"wind_kph"`
		WindDegree string `xml:"wind_degree"`
		WindDir    string `xml:"wind_dir"`
		PressureMb string `xml:"pressure_mb"`
		PressureIn string `xml:"pressure_in"`
		PrecipMm   string `xml:"precip_mm"`
		PrecipIn   string `xml:"precip_in"`
		Humidity   string `xml:"humidity"`
		Cloud      string `xml:"cloud"`
		FeelslikeC string `xml:"feelslike_c"`
		FeelslikeF string `xml:"feelslike_f"`
		VisKm      string `xml:"vis_km"`
		VisMiles   string `xml:"vis_miles"`
		Uv         string `xml:"uv"`
		GustMph    string `xml:"gust_mph"`
		GustKph    string `xml:"gust_kph"`
	} `xml:"current"`
	Forecast struct {
		Text        string `xml:",chardata"`
		Forecastday struct {
			Text      string `xml:",chardata"`
			Date      string `xml:"date"`
			DateEpoch string `xml:"date_epoch"`
			Day       struct {
				Text              string `xml:",chardata"`
				MaxtempC          string `xml:"maxtemp_c"`
				MaxtempF          string `xml:"maxtemp_f"`
				MintempC          string `xml:"mintemp_c"`
				MintempF          string `xml:"mintemp_f"`
				AvgtempC          string `xml:"avgtemp_c"`
				AvgtempF          string `xml:"avgtemp_f"`
				MaxwindMph        string `xml:"maxwind_mph"`
				MaxwindKph        string `xml:"maxwind_kph"`
				TotalprecipMm     string `xml:"totalprecip_mm"`
				TotalprecipIn     string `xml:"totalprecip_in"`
				AvgvisKm          string `xml:"avgvis_km"`
				AvgvisMiles       string `xml:"avgvis_miles"`
				Avghumidity       string `xml:"avghumidity"`
				DailyWillItRain   string `xml:"daily_will_it_rain"`
				DailyChanceOfRain string `xml:"daily_chance_of_rain"`
				DailyWillItSnow   string `xml:"daily_will_it_snow"`
				DailyChanceOfSnow string `xml:"daily_chance_of_snow"`
				Condition         struct {
					Chardata string `xml:",chardata"`
					Text     string `xml:"text"`
					Icon     string `xml:"icon"`
					Code     string `xml:"code"`
				} `xml:"condition"`
				Uv string `xml:"uv"`
			} `xml:"day"`
			Astro struct {
				Text             string `xml:",chardata"`
				Sunrise          string `xml:"sunrise"`
				Sunset           string `xml:"sunset"`
				Moonrise         string `xml:"moonrise"`
				Moonset          string `xml:"moonset"`
				MoonPhase        string `xml:"moon_phase"`
				MoonIllumination string `xml:"moon_illumination"`
			} `xml:"astro"`
			Hour []struct {
				Text      string `xml:",chardata"`
				TimeEpoch string `xml:"time_epoch"`
				Time      string `xml:"time"`
				TempC     string `xml:"temp_c"`
				TempF     string `xml:"temp_f"`
				IsDay     string `xml:"is_day"`
				Condition struct {
					Chardata string `xml:",chardata"`
					Text     string `xml:"text"`
					Icon     string `xml:"icon"`
					Code     string `xml:"code"`
				} `xml:"condition"`
				WindMph      string `xml:"wind_mph"`
				WindKph      string `xml:"wind_kph"`
				WindDegree   string `xml:"wind_degree"`
				WindDir      string `xml:"wind_dir"`
				PressureMb   string `xml:"pressure_mb"`
				PressureIn   string `xml:"pressure_in"`
				PrecipMm     string `xml:"precip_mm"`
				PrecipIn     string `xml:"precip_in"`
				Humidity     string `xml:"humidity"`
				Cloud        string `xml:"cloud"`
				FeelslikeC   string `xml:"feelslike_c"`
				FeelslikeF   string `xml:"feelslike_f"`
				WindchillC   string `xml:"windchill_c"`
				WindchillF   string `xml:"windchill_f"`
				HeatindexC   string `xml:"heatindex_c"`
				HeatindexF   string `xml:"heatindex_f"`
				DewpointC    string `xml:"dewpoint_c"`
				DewpointF    string `xml:"dewpoint_f"`
				WillItRain   string `xml:"will_it_rain"`
				ChanceOfRain string `xml:"chance_of_rain"`
				WillItSnow   string `xml:"will_it_snow"`
				ChanceOfSnow string `xml:"chance_of_snow"`
				VisKm        string `xml:"vis_km"`
				VisMiles     string `xml:"vis_miles"`
				GustMph      string `xml:"gust_mph"`
				GustKph      string `xml:"gust_kph"`
				Uv           string `xml:"uv"`
			} `xml:"hour"`
		} `xml:"forecastday"`
	} `xml:"forecast"`
}
0
Эксперт функциональных языков программированияЭксперт Java
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
13.04.2021, 20:45 4
Кликните здесь для просмотра всего текста
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
 
import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
 
    "github.com/pelletier/go-toml"
)
 
type Document struct {
    Location Location `json:"location" toml:"location"`
}
 
type Location struct {
    Name    string  `json:"name"    toml:"name"`
    Region  string  `json:"region"  toml:"region"`
    Country string  `json:"country" toml:"country"`
    Lat     float64 `json:"lat"     toml:"lat"`
    Lon     float64 `json:"lon"     toml:"lon"`
}
 
func main() {
    if err := example(); err != nil {
        log.Fatal(err)
    }
}
 
func example() (err error) {
    var url = "http://api.weatherapi.com/v1/forecast.json?key=d7f9e36099f54762802123333211004&q=Saint-Petersbur"
 
    var jsonDoc []byte
    if jsonDoc, err = get(url); err != nil {
        return fmt.Errorf("cannot get JSON document: %w", err)
    }
 
    var doc Document
    if err = json.Unmarshal(jsonDoc, &doc); err != nil {
        return fmt.Errorf("cannot unmarshal JSON: %w", err)
    }
 
    var tomlDoc []byte
    if tomlDoc, err = toml.Marshal(doc); err != nil {
        return fmt.Errorf("cannot marshal TOML: %w", err)
    }
 
    fmt.Println(string(tomlDoc))
    return nil
}
 
func get(url string) (data []byte, err error) {
    var res *http.Response
    if res, err = http.Get(url); err != nil {
        return nil, fmt.Errorf("cannot GET url: %w", err)
    }
    defer func() {
        _ = res.Body.Close()
    }()
 
    if data, err = ioutil.ReadAll(res.Body); err != nil {
        return nil, fmt.Errorf("cannot read HTTP response: %w", err)
    }
 
    return data, nil
}


Добавлено через 27 секунд
Цитата Сообщение от ESKESK Посмотреть сообщение
А как должна выглядеть структура JSON ?
Открой свою ссылку и посмотри
0
0 / 0 / 0
Регистрация: 07.10.2020
Сообщений: 13
13.04.2021, 20:46  [ТС] 5
А, дошло, структура верхнего уровня не указана. А я не понял, потому что открыв файл не увидел ее (видишь суслика? А он есть!). Вопрос решен.
0
Эксперт функциональных языков программированияЭксперт Java
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
13.04.2021, 20:47 6
0
13.04.2021, 20:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2021, 20:47
Помогаю со студенческими работами здесь

Ошибка в разборе JSON
вот смотрите, приходит мне такой ответ от сервера: { "response":{ "count":тут число, "items":...

Ошибка JSON при разборе ответа от openwatherorg
Всем привет! Пишу бот для телеграма. Почему-то, при отправки сообщения с городом, получаю ошибку...

При разборе JSON: два листинга работают, по разному, хотя ожидается один результат
Есть разбор json на простом примере: let paths = }, { "pathName": "path24", ...

Нужно найти ошибку в json
{"all":,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...

Ошибка "ссылка на объект не указывает на экземпляр объекта" при разборе Json
Столкнулся с такой ошибкой компилятора: ссылка на объект не указывает на экземпляр объекта...

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru