我的有效载荷看起来像这样:
{
"REFERENCE": "1",
"FIELDS" : {
"CUST" : "1234",
"PROD" : "PR2134",
"LIMIT" : "12345",
"LINES" : {
"LINE" : "01",
"DATA" : "12"
}
}
}
我的对象只有以下内容:
public class TriggerRequest
{
public string reference { get; set; }
public Dictionary<string, string> fields { get; set; }
}
显然,这并不能处理LINES对象。如何创建一个反序列化入站有效负载的类,其中LINES之类的东西是动态的(即我可以在任何字典中发送&gt;在有效负载的任何一点,并且它可以正确地反序列化。这是我需要创建的时候自定义JsonConverter?
答案 0 :(得分:2)
您可以改用dynamic
。
public class TriggerRequest
{
public string reference { get; set; }
public dynamic fields { get; set; }
}
这应该允许您直接在代码中访问(string)request.fields.lines.data
。
但是,如果您在编译时不知道其中包含哪些值,您可能更愿意将字段设为JObject
。
public class TriggerRequest
{
public string reference { get; set; }
public JObject fields { get; set; }
}
这使您有机会编写代码,检查每个属性中的数据类型并做出相应的响应。
最后,如果您 知道您希望fields
拥有哪些属性,请为其创建一个单独的类。
public class TriggerRequest
{
public string reference { get; set; }
public TriggerRequestFields fields { get; set; }
}
public class TriggerRequestFields
{
public string cust {get;set;}
...
public TriggerRequestLines lines {get;set;}
}
public class TriggerRequestLines
{
public string line {get;set;}
public string data {get;set;}
}
答案 1 :(得分:0)
尝试更改
public Dictionary<string, dynamic> fields { get; set; }
使用
public Dictionary<string, object> fields { get; set; }