Я бы не стал рассматривать этот подход для большого количества переименований. Тогда лучше следовать советам, данным в комментариях.

от вопрос уже есть ответ здесь:

Используйте другое имя для сериализации и десериализации с Json.Net 1 ответ

Я пытаюсь прочитать файл JSON, переименовать имена свойств и экспортировать новый JSON с новыми именами. Как указано в этом примере,https://www.newtonsoft.com/json/help/html/JsonPropertyName.htmмы можем использовать JsonProperty, чтобы указать другое имя внутри кода. Однако, когда вы экспортируете json, он возвращает оригинальное имя. Таким образом, в примере он по-прежнему возвращал «release_date» вместо «ReleaseDate», когда он был зарегистрирован в консоли. Есть ли способ сделать это, не создавая новый объект?

Чтобы прояснить ситуацию, вот пример того, что я пытаюсь сделать:

Вход JSON:

{ "name": "Starcraft", "release_date": "1998-01-01T00:00:00" }

Объект Используется для десериализации данных:

public class Videogame
{
    public string name{ get; set; }

    [JsonProperty("release_date")]
    public DateTime releaseDate { get; set; }
}

Код, который называется:

var json = JsonConvert.DeserializeObject<Videogame>(File.ReadAllText(path))
Console.WriteLine(JsonConvert.SerializeObject(json));

Результирующий вывод:

{ "name": "Starcraft", "release_date": "1998-01-01T00:00:00" }

Желаемый результат:

{ "name": "Starcraft", "releaseDate": "1998-01-01T00:00:00" }

Единственный способ, которым я в настоящее время знаю, как решить это, состоит в том, чтобы создать новый объект и использовать его для сериализации моего вывода. Не был уверен, есть ли более простой способ сделать это.

Ответы на вопрос(2)

Ваш ответ на вопрос