Properti json dinamis deserialisasi

Aug 20 2020

Saya mengalami kesulitan untuk mengetahui cara deserialisasi json, yang memiliki properti dinamis (misalnya - UserRequest :: 567) nama properti dapat berupa nilai apa pun dan objek UserRequest berisi properti json lain yang menarik bagi saya

Saya lelah menulis kelas dan saya tidak tahu apa yang harus saya lakukan dengan properti itu. Apa praktik terbaik untuk mengatasi masalah seperti ini?

{
    "objects": {
        "UserRequest::567": {
            "code": 0,
            "message": "created",
            "class": "UserRequest",
            "key": "567",
            "fields": {
                "ref": "R-000567",
                "org_id": "4"
            }
        }
    }
}

Pertanyaannya adalah apa praktik terbaik untuk membaca string json semacam ini?

Terima kasih

Jawaban

1 janzen Aug 20 2020 at 23:23

Untuk Deserializepenggunaan ini Newtonsoft.Json, berikut adalah kelasnya:

public class CreateRequest
{
    public long code { get;set; }
    public string message { get; set; }

    [JsonProperty("class")]
    public string class1 { get; set; }

    public string key { get; set; }
    public Fields fields { get; set; }
}

public class Fields
{
    [JsonProperty("ref")]
    public string refe { get; set; }
    public string org_id { get; set; }
}

public class Root
{
    public Dictionary<string, CreateRequest> objects { get; set; }
    //The 'string' key in the dictionary is the 'UserRequest::567'
}

Kemudian Deserializegunakan:

var x = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(jsonObject).objects.Values;