c# - 动态 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 字符串的最佳实践是什么?
谢谢
解决方案
为此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;
推荐阅读
- javascript - 为什么我的javascript函数应该返回false时返回true
- .net - 如何在 C++/CLI 的派生类中实例化泛型基类?
- python-3.x - Cloud Run Qs :: max-instances + concurrency + threads (gunicorn thread)
- c++ - 具有任何函数输入的 sigma 函数
- python - Python:在不同进程之间传递值
- c++ - 为什么我的 C++ 线程池不能加速我的程序?
- javascript - 使用 Vue.js 单击时向下滚动
- flutter - 该方法是在 null 发生的偶然事件上调用的
- swift - 用于在 firestore 数组中搜索值的 for 循环
- javascript - React:使用 Axios,这样我就可以在第二个请求中使用来自第一个请求的数据