c# - C# 复杂类构造从 JSON 读取/设置值
问题描述
我有个问题; 我有各种(太多)类,作为父/子链接
我最初填充我的顶级类,同时实例化其他类,如下(工作):
TopClass MyClass = new TopClass()
{
Headers = new someHeaders()
{
CorrID = "1234567890",
RequestID = "1234567890",
L_Token = "abcdefghijklmnopqrstuvwxyz"
},
Body = new someBody()
{
access = new AccessHeaders()
{
allPs = "allAcc",
availableAcc = "all"
},
CombinedServiceIndicator = false,
FrequencyPerDay = 10,
ValidUntil = "2020-12-31"
},
ResponseAttributes = new ConsentResponse()
{
myId = String.Empty,
myStatus = String.Empty,
myName = String.Empty,
_links_self_href = String.Empty,
status_href = String.Empty
}
};
我在上面填充的初始值很少更改,但是随着项目的进行,类的属性会发生变化,并且每个类最终都有许多属性。我需要解析属性并将值设置为与其名称匹配的任何属性,但尽管遵循官方示例,我似乎无法弄清楚原因。(我从使用 Newtonsoft 的 JSON 字符串中读取输入数据 - 已经尝试了所有方法)
我找不到反序列化 JSON并在不使用属性名称的情况下为我的属性分配任何值的方法,即不说
MyClass.Body.access.allPs = "Hello"
但类似的东西
var json = response.Content.ReadAsStringAsync().Result.ToString();
var a = new { serverTime = "", data = new object[] { } };
var c = new JsonSerializer();
或者
if (myresponse.Attributes.GetType().GetTypeInfo().GetDeclaredProperty(key) != null)
myresponse.GetType().GetTypeInfo().GetDeclaredProperty(key).SetValue(myresponse, entry.Value);
//and how do I read the value, parse my TopClass and assign the value to correct property?
有人可以帮助我吗?
解决方案
如果 JSON 根据上述类具有正确的结构,则属性的值将自动分配。
就像是:
{
"Body":
"access:
{
"allPs" = "required value"
}
}
然后你可以使用:
var result = JsonConvert.DeserializeObject < TopClass > (json );
推荐阅读
- reactjs - All imports are undefined for one module during Jest test run
- python - How to soup particular div class when there is another with similar one?
- python - How to add error bar with grouped bar plot using Seaborn
- azure - 使用 Azure CLI 或命令外壳执行时,Azure 容器注册表存储库或映像删除出错
- java - Jfree 图表值轴标签被裁剪
- c# - Realm .NET Where 使用 Contains() 查询抛出 System.NotSupportedException
- ios - 相同的类按钮在点击时的反应不同
- ios - 当应用程序在后台时保存 NSUserDefaults 值
- web - 如何通过 MOBILE 核心网络生命体征?
- python - 有人可以解释一下k-means中肘部啮合下这段代码的含义吗