首页 > 解决方案 > 动态 json 属性反序列化

问题描述

我很难弄清楚如何反序列化具有动态属性(例如 - UserRequest::567)的 json,属性名称可以是任何值,并且 UserRequest 对象包含我感兴趣的其他 json 属性

我厌倦了写一堂课,我不知道如何处理该属性。处理此类问题的最佳实践是什么?

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

在此处输入图像描述

问题是阅读这种 json 字符串的最佳实践是什么?

谢谢

标签: c#json

解决方案


为此Deserialize使用Newtonsoft.Json,这里是类:

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'
}

然后Deserialize使用:

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

推荐阅读