Deserialize в C#
Помогите, пожалуйста, разобраться, никак не могу понять 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 шт):
Автор решения: rotabor
→ Ссылка
Для понимания, что происходит, выполните этот код:
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);