Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memetakan Hartanah JSON Bersarang ke Sifat Kelas dalam C#?

Bagaimana untuk Memetakan Hartanah JSON Bersarang ke Sifat Kelas dalam C#?

Barbara Streisand
Lepaskan: 2025-01-24 23:06:10
asal
436 orang telah melayarinya

How to Map Nested JSON Properties to Class Properties in C#?

Peta sub-sifat objek JSON ke sifat kelas

Apabila menemui data JSON dengan struktur hierarki, anda mungkin mahu memetakan subsifat objek kompleks JSON kepada sifat mudah dalam kelas. Walaupun rangka kerja Newtonsoft.Json menyediakan [DataMember] atribut untuk memetakan data JSON mentah, ia tidak menyokong sub-sifat pemetaan secara asli.

Walau bagaimanapun, terdapat cara untuk mencapai pemetaan ini. Pendekatan yang mudah ialah menyahsiri JSON kepada JObject dan menggunakan SelectToken untuk mendapatkan semula subsifat yang diperlukan.

Sebagai contoh, pertimbangkan data JSON berikut:

<code class="language-json">{
    "picture": {
        "id": 123456,
        "data": {
            "type": "jpg",
            "url": "http://www.someplace.com/mypicture.jpg"
        }
    }
}</code>
Salin selepas log masuk

Untuk memetakan sub-sifat url kepada harta ProfilePicture dalam kelas, anda boleh menggunakan kod berikut:

<code class="language-csharp">string json = @"
{
    ""picture"": 
    {
        ""id"": 123456,
        ""data"": 
        {
            ""type"": ""jpg"",
            ""url"": ""http://www.someplace.com/mypicture.jpg""
        }
    }
}";

JObject jo = JObject.Parse(json);
Person p = jo.ToObject<Person>();
p.ProfilePicture = (string)jo.SelectToken("picture.data.url");</code>
Salin selepas log masuk

Jika anda memerlukan penyelesaian yang lebih maju, anda boleh melaksanakan JsonConverter tersuai supaya atribut JsonProperty berfungsi seperti yang diharapkan. Penukar ini akan menggunakan pantulan untuk mengisi semua sifat berdasarkan laluan yang ditentukan dalam harta tersebut.

Sebagai contoh, pertimbangkan data JSON berikut:

<code class="language-json">{
  "name": "Joe Shmoe",
  "age": 26,
  "picture": {
    "id": 123456,
    "data": {
      "type": "jpg",
      "url": "http://www.someplace.com/mypicture.jpg"
    }
  },
  "favorites": {
    "movie": {
      "title": "The Godfather",
      "starring": "Marlon Brando",
      "year": 1972
    },
    "color": "purple"
  }
}</code>
Salin selepas log masuk

Untuk menyahsiri JSON dan memetakan subsifat kepada sifat mudah dalam kelas, anda boleh menggunakan penukar tersuai berikut:

<code class="language-csharp">[JsonConverter(typeof(JsonPathConverter))]
class Person
{
    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("age")]
    public int Age { get; set; }

    [JsonProperty("picture.data.url")]
    public string ProfilePicture { get; set; }

    [JsonProperty("favorites.movie")]
    public Movie FavoriteMovie { get; set; }

    [JsonProperty("favorites.color")]
    public string FavoriteColor { get; set; }
}</code>
Salin selepas log masuk

Dengan penukar tersuai, anda boleh menyahsiri JSON seperti biasa:

<code class="language-csharp">Person p = JsonConvert.DeserializeObject<Person>(json);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memetakan Hartanah JSON Bersarang ke Sifat Kelas dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan