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);
→ Ссылка