Нужно вытащить с конкретного API https://nominatim.openstreetmap.org/search?q=%D0%98%D0%B6%D0%B5%D0%B2%D1%81%D0%BA&format=json&polygon_geojson=1
Конкретно нужно только данные по тегу coordinates, но для начала решил попробовать хоть строку вытащить. Пробовал так:
using System;
using System.Net;
using System.Text;
using System.Text.Json;
namespace StackOverFlowQuestion1
{
class Program
{
class OSMData
{
int place_id { get; set; }
string licence { get; set; }
}
static void Main(string[] args)
{
string connection = $"https://nominatim.openstreetmap.org/search?q=Ижевск&format=json&polygon_geojson=1";
WebClient webClient = new WebClient { Encoding = Encoding.UTF8 };
webClient.Headers["User-Agent"] = "Mozilla/5.0";
string Json = webClient.DownloadString(connection);
//Json = Json.Remove(Json.Length - 1).Remove(0, 1);
var obj = JsonSerializer.Deserialize<OSMData>(Json);
}
}
}
выдаёт ошибку
" The JSON value could not be converted to StackOverFlowQuestion1.Program+OSMData. Path: $ | LineNumber: 0 | BytePositionInLine: 1."
Обратил внимание на нестандартные на мой не очень понимающий взгляд "[]" на концах файла, так что Если расскоментить закоменченную в программе строчку, то для некоторых случаев проходит, но не записывает ничего в экземпляр класса. В общем что посоветуете сделать? Полностью описывать всё, если так, то подскажите как правильно, парочку полей хотя-бы опишите для аналогии
OSMData[] obj = JsonSerializer.Deserialize<OSMData[]>(Json);или так тоже можноList<OSMData> obj = JsonSerializer.Deserialize<List<OSMData>>(Json);– aepot Feb 10 '21 at 20:27