javascript - 如何在 C# 通用处理程序中引用从 javascript 接收的反序列化对象属性?

标签 javascript c# ajax generic-handler

我有一个 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.DAYSpecific["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# 通过其他方式完成此反射,如此处答案之一所述:

How to access property of anonymous type in C#?

关于javascript - 如何在 C# 通用处理程序中引用从 javascript 接收的反序列化对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432418/

相关文章:

javascript - 解析来自远程网站的xml数据

javascript - 如何(wrapInner 或 wrapAll)排除第一个 div 类

javascript - 页面加载后运行功能但不刷新

c# - 如何使用 SpecFlow 测试选择的 html 控件对象?

c# - 如何从应用程序级别使用 Azure 中的服务配置?

javascript - 为什么我不能在 ajax 成功中访问 $(this)

javascript - Ajax请求经过js检查后返回响应

javascript - 不兼容的 html 页面中的 TabIndex 控件

javascript - 如何仅更改对象的一个​​属性

c# - MVVM 通用 app.config