JSON.NET:定义可以容纳两种不同类型对象的C#字段
我使用JSON.NET序列化了以下对象(不是特别的,而是类似的结构)JSON.NET:定义可以容纳两种不同类型对象的C#字段,c#,json.net,C#,Json.net,我使用JSON.NET序列化了以下对象(不是特别的,而是类似的结构) 请求的基本类 public class Request { public string version = "1.0"; public RequestParams params; public Request(RequestParams params) { this.params = params; } } 基本有效载荷类别 public abstract clas
public class Request
{
public string version = "1.0";
public RequestParams params;
public Request(RequestParams params)
{
this.params = params;
}
}
public abstract class RequestParams
{ }
public SampleRequest : RequestParams
{
public string someInfo = "param info";
}
new Request(new SampleRequest());
{
"version":"1.0",
"params":{
"dynamic":"x",
...any number of dynamically added fields
"dynamic2":"y"
}
}
我该怎么做?创建一个基本的
请求
类,该类从参数
字典中提取其信息。这是您的动态请求对象
创建从操作字典的请求继承的类,而不是成员。这些是您的“已知”请求
params
是.Net中的一个关键字。考虑使用另一个可变名称。 可以使用<代码>动态< /代码>和<代码> ExpObjObjs<代码>:
dynamic parameters = new ExpandoObject();
parameters.Name = "Name";
parameters.Age = 30;
// Adding as much property as you like dynamically
在序列化之后,这将成为:
{
'Name': 'Name',
'Age': 32,
/* any other dynamic property */
}
谢谢,通过这篇技巧,我想出了一个解决方案——将RequestParams映射到内部字典:)解决了这个问题。params单词用于示例-不是实际代码;)