我有以下使用JSON.NET序列化的对象(特别是这个,但结构相似)。
请求的基本类
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());
当我知道请求的结构时,这很好。但是,有时我需要将动态对象定义为“params”参数。也就是说,我需要将“params”对象视为一个Dictionary(但没有[]),以便我以下列格式接收JSON:
{
"version":"1.0",
"params":{
"dynamic":"x",
...any number of dynamically added fields
"dynamic2":"y"
}
}
我该怎么做?
答案 0 :(得分:2)
创建一个基类Request
类,从params
字典中提取其信息。这是您的动态请求对象。
创建继承自Request
的类,而不是成员。这些是你'已知'的请求。
params
是.Net中的关键字。考虑使用另一个可变名称。
答案 1 :(得分:1)
您可以使用dynamic
和ExpandoObject
:
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 */
}