Помогите, пожалуйста, разобраться, никак не могу понять Deserialize в C#.
Мне нужно из файла .json считать в объект класса данные и вывести на экран.
public void GetPerson()
{
var PesonJson = File.ReadAllText("Person.json");
Person person = JsonSerializer.Deserialize<Person>(PesonJson);
Console.WriteLine(person.Name);
}
Выдает исключение:
System.Text.Json.JsonException:
"The JSON value could not be converted to JsonApp.Model.Person. Path:
$ | LineNumber: 0 | BytePositionInLine: 1."
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Json файл
[
{
"Name": "Tom",
"Age": 37
},
{
"Name": "Jhon",
"Age": 28
},
{
"Name": "Emma",
"Age": 29
},
{
"Name": "Shara",
"Age": 39
}
]
1 ответ 1
Для понимания, что происходит, выполните этот код:
using System;
using System.Text.Json;
using System.IO;
public class Person {
public string Name { get; set; }
}
static class Program {
static void GetPerson() {
var PesonJson = File.ReadAllText("Person.json");
Person person = JsonSerializer.Deserialize<Person>(PesonJson);
Console.WriteLine(person.Name);
}
static void PutPerson() {
File.WriteAllText("Person.json", JsonSerializer.Serialize<Person>(new Person() { Name = "Oleg" }));
}
static void Main() {
PutPerson();
GetPerson();
}
}
Код создаёт экземпляр класса Person и сохраняет его JSONом в файл, а потом читает оттуда.
Подставьте своё определение класса Person. После выполнения посмотрите содержимое файла "Person.json".
У вас проблема в том, что в файле список или массив Person, который нужно читать так:
Person[] persons = JsonSerializer.Deserialize<Person[]>(PesonJson);
Console.WriteLine(persons[0].Name);
ответ дан 20 янв. 2024 в 13:37
rotabor
7,1802 золотых знака5 серебряных знаков20 бронзовых знаков
Начните задавать вопросы и получать на них ответы
Найдите ответ на свой вопрос, задав его.
Задать вопросlang-cs
Что делаю ни так?- это вы нам скажите, что у вас там не так. Пока мы видим лишь вызов метода, без JSON, без класса, без вообще какой либо информации...[]) в один конкретный класс, когда как должно бытьPerson[](массив персон). Видите, сразу ответы пошли, ну а без этих данных на вопрос просто невозможно дать ответ, ибо в JSON и в классе у вас может быть что угодно. На будущее, пожалуйста, все данные сразу.