0

Нужно вытащить с конкретного 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."

Обратил внимание на нестандартные на мой не очень понимающий взгляд "[]" на концах файла, так что Если расскоментить закоменченную в программе строчку, то для некоторых случаев проходит, но не записывает ничего в экземпляр класса. В общем что посоветуете сделать? Полностью описывать всё, если так, то подскажите как правильно, парочку полей хотя-бы опишите для аналогии

  • Посоветую начать с изучения формата JSON. Я искренне не понимаю, почему люди, которым надо распарсить json/xml/yaml/csv не читают про устройство этих форматов. Сотни вопросов на ru.so и тысячи на en.so... PS: квадратные скобки - массив (коллекция). Фигурные скобки - объект. – Alexander Petrov Feb 10 '21 at 20:06
  • Там массив, обратите внимание на квадратную скобку в самом начале - OSMData[] obj = JsonSerializer.Deserialize<OSMData[]>(Json); или так тоже можно List<OSMData> obj = JsonSerializer.Deserialize<List<OSMData>>(Json); – aepot Feb 10 '21 at 20:27

0 Answers0