我有一个 JavaScript 脚本,它进行 jQuery AJAX 调用,并在“data”属性中传递序列化的 JavaScript 对象:
data: { Specific: JSON.stringify({DAY: "1", DEP: "2", CARRIER: "3", FLT: "4", LEGCD: "5"})
它是在 C# 通用处理程序中接收的:
var Specific = JsonConvert.DeserializeObject(context.Request.Params["Specific"]);
在 Visual Studio 调试器内的通用处理程序中,我可以看到接收到的对象。
Specific = {{ "DAY": "", "DEP": "", "CARRIER": "", "FLT": "", "LEGCD": "" }}
我的问题是,如何引用接收到的对象的属性(DAY、DEP、FLT 等)?
我尝试了 Specific.DAY
和 Specific["DAY"]
,但没有成功。
最佳答案
而不是使用
var Specific = JsonConvert.DeserializeObject(context.Request.Params["SpecificFlt"]);
最终得到“特定”的 System.Object
类型,它可能有助于反序列化为自定义类型,如下所示:
public class SpecificObj
{
public string DAY {get; set;}
public string DEP {get; set;}
public string CARRIER {get; set;}
public string FLT {get; set;}
public string LEGCD {get; set;}
}
还有
var Specific = JsonConvert.DeserializeObject<SpecificObj>(context.Request.Params["SpecificFlt"]);
从那里您应该能够使用典型的点操作(Specific.DAY
)访问属性
编辑:或者您可以使用反射:
Type t = Specific.GetType();
PropertyInfo p = t.GetProperty("DAY");
string day = (string)p.GetValue(Specific);
可以使用较新版本的 C# 通过其他方式完成此反射,如此处答案之一所述:
关于javascript - 如何在 C# 通用处理程序中引用从 javascript 接收的反序列化对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432418/