Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
 Аватар для Nekromio
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 69

Чтение файла json через url

24.12.2021, 22:57. Показов 5708. Ответов 27

Студворк — интернет-сервис помощи студентам
Ребят подскажите как можно считать файл json по url, необходимо следующий код переделать из считыванию по пути, в считывания по url

C#
1
2
3
4
5
6
7
8
9
private void BasicPart()
{
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    var enc1251 = Encoding.GetEncoding(1251);
    var filePath = "/vs/Test 2.0/json1.json";
    var fileContent = System.IO.File.ReadAllText(filePath, enc1251);
 
    Rootobject Object = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(fileContent);
}
То есть хотелось бы, не скачивать в определённое место файл, а потом его считывать, а сразу считать. Кто подскажет?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2021, 22:57
Ответы с готовыми решениями:

Чтение файла по url
Подскажите искал на форуме есть тока чтение из файла лежащего на диске как прочесть файл http://gwergrgr.fg/News.txt и запихать его в...

Чтение и модификация существующего json файла
Добрых времени суток. Появилась прочитать и модифицировать json файлик (ранее обходился только чтением/записью). Теперь Выглядит сам json...

Чтение JSON-файла с помощью Newtonsoft.Json
И так, у нас есть JSon-файл вот такого типа: { &quot;objects&quot;: { &quot;minecraft/sounds/entity/rabbit/attack2.ogg&quot;: { ...

27
 Аватар для Nekromio
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 69
31.12.2021, 10:29  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от I2um1 Посмотреть сообщение
C#
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
using System.Net.Http;
using System.Text;
 
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
var url = "";
using var client = new HttpClient();
using HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
 
string json = await response.Content.ReadAsStringAsync();
 
Rootobject object2 = System.Text.Json.JsonSerializer.Deserialize<Rootobject>(json);
 
sealed class Rootobject
{
    public Ticket[] Tickets { get; set; }
}
 
sealed class Ticket
{
    public int ticket_id { get; set; }
    public TicketContent[] ticket_content { get; set; }
}
 
sealed class TicketContent
{
    public string id { get; set; }
    public string question { get; set; }
    public string[] response_options { get; set; }
    public string correct_answer { get; set; }
    public string type_question { get; set; }
}

Надо смотреть какой HTTP запрос ожидает сайт и какой отдает ответ. Есть риск, что заголовка не будет или будет неправильный. Или сайт вообще может отдавать не json, а например json внутри html.

Если сайт не отдает правильный заголовок контента или отдает неправильный, но известно, что это json в кодировке 1251, то можно сделать так:
C#
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
using System.Net.Http;
using System.Text;
 
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
var url = "";
using var client = new HttpClient();
using HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
 
byte[] bytes = await response.Content.ReadAsByteArrayAsync();
string json = Encoding.GetEncoding(1251).GetString(bytes);
 
Rootobject object2 = System.Text.Json.JsonSerializer.Deserialize<Rootobject>(json);
 
sealed class Rootobject
{
    public Ticket[] Tickets { get; set; }
}
 
sealed class Ticket
{
    public int ticket_id { get; set; }
    public TicketContent[] ticket_content { get; set; }
}
 
sealed class TicketContent
{
    public string id { get; set; }
    public string question { get; set; }
    public string[] response_options { get; set; }
    public string correct_answer { get; set; }
    public string type_question { get; set; }
}
Выдаёт ошибку:
C#
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
async Task BasicPart()
{
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
    var url = "https://mysite.ru/json1.json";
    using var client = new HttpClient();
    using HttpResponseMessage response = await client.GetAsync(url);
    response.EnsureSuccessStatusCode();
 
    byte[] bytes = await response.Content.ReadAsByteArrayAsync();
    string json = Encoding.GetEncoding(1251).GetString(bytes);
 
    Rootobject Object = System.Text.Json.JsonSerializer.Deserialize<Rootobject>(json);
    
    /*
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
    var url = "https://mysite.ru/json1.json";
    using var client = new HttpClient();
    using HttpResponseMessage response = await client.GetAsync(url);
    response.EnsureSuccessStatusCode();
     
    string json = await response.Content.ReadAsStringAsync();
     
    Rootobject Object = System.Text.Json.JsonSerializer.Deserialize<Rootobject>(json);
    */
}
 
private async void button1_Click(object sender, EventArgs e)
{
    await BasicPart();
}

Если нужен
Кликните здесь для просмотра всего текста

C#
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
using System.Collections.Generic;
using Newtonsoft.Json;
 
namespace Test_2._0
{
    public class Rootobject
    {
        public Ticket[] Tickets { get; set; }
    }
 
    public class Ticket
    {
        public int ticket_id { get; set; }
        public Ticket_Content[] ticket_content { get; set; }
    }
 
    public class Ticket_Content
    {
        [JsonProperty("id")]
        public string Id { get; set; }
 
        [JsonProperty("question")]
        public string QuestionText { get; set; }
 
        [JsonProperty("response_options")]
        public List<string> ResponseOptions { get; set; }
 
        [JsonProperty("correct_answer")]
        public string CorrectAnswer { get; set; }
 
        [JsonProperty("type_question")]
        public string TypeQuestion { get; set; }
    }
}
Миниатюры
Чтение файла json через url  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
31.12.2021, 10:42
Давно бы уже ссылку на ваш json бы выложили для теста (именно то место, откуда вы сами его хотите прочитать, чтобы условия были одинаковые), чтобы мы не гадали что у вас там не так...

А еще у вас как-то странно показывает место ошибки, должно указывать на конкретную строку в методе, где произошло исключение, а не на место вызова этого метода...
1
 Аватар для Nekromio
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 69
31.12.2021, 10:45  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Давно бы уже ссылку на ваш json бы выложили для теста (именно то место, откуда вы сами его хотите прочитать, чтобы условия были одинаковые), чтобы мы не гадали что у вас там не так...

А еще у вас как-то странно показывает место ошибки, должно указывать на конкретную строку в методе, где произошло исключение, а не на место вызова этого метода...
https://test.tor2.ru/ticket/json1.json

Вот ссылка на сам файл
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
31.12.2021, 13:52
Ну что я могу сказать, ваш код из поста Чтение файла json через url в принципе рабочий, у меня никаких ошибок не возникает, только атрибут использован неверный. Нужно вместо JsonProperty использовать JsonPropertyName, иначе все свойства в Ticket_Content будут null...

Проверялось на .NET 6. Если у вас другой Target Framework, напишите какой...

Добавлено через 12 минут
Кодировка в файле действительно 1251, сервер кодировку не отправляет. Если вы поменяете кодировку в файле на utf8, то с ним будет намного проще работать, достаточно будет пары строк как написано в посте Чтение файла json через url
1
 Аватар для Nekromio
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 69
31.12.2021, 15:02  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Ну что я могу сказать, ваш код из поста Чтение файла json через url в принципе рабочий, у меня никаких ошибок не возникает, только атрибут использован неверный. Нужно вместо JsonProperty использовать JsonPropertyName, иначе все свойства в Ticket_Content будут null...

Проверялось на .NET 6. Если у вас другой Target Framework, напишите какой...

Добавлено через 12 минут
Кодировка в файле действительно 1251, сервер кодировку не отправляет. Если вы поменяете кодировку в файле на utf8, то с ним будет намного проще работать, достаточно будет пары строк как написано в посте Чтение файла json через url
Так всё работает, но если поменять на System.Text.Json, то опять ошибка чтения.
C#
1
2
3
4
5
6
7
8
9
10
11
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
            var url = "https://test.tor2.ru/ticket/json1.json";
            using var client = new HttpClient();
            using HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();
 
            string json = await response.Content.ReadAsStringAsync();
 
            //Rootobject Object = System.Text.Json.JsonSerializer.Deserialize<Rootobject>(json);
            Rootobject Object = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(json);
Большое спасибо вам за помощь.

Да, я поменял кодировку файла на UTF8 Без bom
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
31.12.2021, 15:05
Цитата Сообщение от Nekromio Посмотреть сообщение
Да, я поменял кодировку файла на UTF8 Без bom
Я заметил. Теперь у меня код
C#
1
2
3
var url = "https://test.tor2.ru/ticket/json1.json";
using var client = new HttpClient();
var obj = await client.GetFromJsonAsync<Rootobject>(url);
C#
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
public class Rootobject
{
    public Ticket[] Tickets { get; set; }
}
 
public class Ticket
{
    public int ticket_id { get; set; }
    public Ticket_Content[] ticket_content { get; set; }
}
 
public class Ticket_Content
{
    [JsonPropertyName("id")]
    public string Id { get; set; }
 
    [JsonPropertyName("question")]
    public string QuestionText { get; set; }
 
    [JsonPropertyName("response_options")]
    public List<string> ResponseOptions { get; set; }
 
    [JsonPropertyName("correct_answer")]
    public string CorrectAnswer { get; set; }
 
    [JsonPropertyName("type_question")]
    public string TypeQuestion { get; set; }
}
отрабатывает без проблем...
0
 Аватар для Nekromio
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 69
31.12.2021, 15:16  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Я заметил. Теперь у меня код
C#
1
2
3
var url = "https://test.tor2.ru/ticket/json1.json";
using var client = new HttpClient();
var obj = await client.GetFromJsonAsync<Rootobject>(url);
C#
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
public class Rootobject
{
    public Ticket[] Tickets { get; set; }
}
 
public class Ticket
{
    public int ticket_id { get; set; }
    public Ticket_Content[] ticket_content { get; set; }
}
 
public class Ticket_Content
{
    [JsonPropertyName("id")]
    public string Id { get; set; }
 
    [JsonPropertyName("question")]
    public string QuestionText { get; set; }
 
    [JsonPropertyName("response_options")]
    public List<string> ResponseOptions { get; set; }
 
    [JsonPropertyName("correct_answer")]
    public string CorrectAnswer { get; set; }
 
    [JsonPropertyName("type_question")]
    public string TypeQuestion { get; set; }
}
отрабатывает без проблем...
Не понятно с чем связано, но у меня пишет System.ArgumentNullException: "Value cannot be null. "
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
31.12.2021, 17:17
Nekromio, да переустановить уже VS или пересозадайте проект, и не парьте мозг ни себе, ни другим. Если один и тот же код на одном клиенте работает, а на другом нет, то это проблема этого клиента. В чем смысл обмусоливать код в данной ситуации?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.12.2021, 17:17

Чтение из файла по URL
Доброе время суток! делаю так: Dim FStreamRead As IO.StreamReader =...

Чтение JSON файла
Здравствуйте! Только начал работать с json, нужна помощь знающих. Помогите пожалуйста с проблемой: Есть json-файл такого типа: { ...

Чтение JSON файла
Здравствуйте, имеется следующий по структуре JSON файл: { &quot;results&quot;: Прочитал несколько статей про десериализацию,...

Чтение из файла / json
Хелп, нужна помощь, не могу понять в чем проблема. if (radioButton3.Checked) { string path =...

Чтение json файла
Всем привет , как вытащить данные из json файла вида: {&quot;code&quot;:&quot;code1&quot;,&quot;name&quot;:&quot;nam1&quot;,&quot;Session&quot;:{&quot;CurrentID&quot;:11111111111111111}} ...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru