Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mensiri dan Menyahseri Medan dengan System.Text.Json dalam .NET?

Bagaimana untuk Mensiri dan Menyahseri Medan dengan System.Text.Json dalam .NET?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-14 07:04:41961semak imbas

How to Serialize and Deserialize Fields with System.Text.Json in .NET?

Sirikan dan nyahsiri medan menggunakan System.Text.Json

Dalam .NET Core 3.x, System.Text.Json mempunyai pengehadan: pensirilan dan penyahsirilan medan tidak disokong. Ini boleh mencipta cabaran jika kelas memerlukan pembolehubah berasaskan medan.

Untuk menyelesaikan masalah ini, terdapat dua cara:

Untuk .NET Core 3.x:

Malangnya, medan tidak disokong dalam .NET Core 3.x. Seperti yang dinyatakan dalam dokumentasi, adalah mungkin untuk menggunakan penukar tersuai untuk mencapai fungsi ini. Walau bagaimanapun, ini memerlukan pelaksanaan proses penukaran manual.

Untuk .NET 5 dan ke atas:

Dalam .NET 5 dan ke atas, medan awam boleh disiri dan dinyahsiri menggunakan System.Text.Json. Terdapat dua cara untuk mencapai ini:

  1. JsonSerializerOptions

Dayakan pensirilan medan dengan menetapkan JsonSerializerOptions.IncludeFields kepada benar.

<code class="language-csharp">var options = new JsonSerializerOptions { IncludeFields = true };
var json = JsonSerializer.Serialize(car, options);
var carDeserialized = JsonSerializer.Deserialize<Car>(json, options);</code>
  1. Atribut [JsonInclude]

Sebagai alternatif, gunakan atribut [JsonInclude] untuk menandakan medan tertentu untuk disirikan.

<code class="language-csharp">public class Car
{
    [JsonInclude]
    public string Model;
}</code>

Dengan menggunakan teknik ini, anda boleh memastikan bahawa medan kelas disiri dan dinyahsiri dengan betul, sekali gus menyimpan data dengan tepat antara objek.

Atas ialah kandungan terperinci Bagaimana untuk Mensiri dan Menyahseri Medan dengan System.Text.Json dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn