gpt4 book ai didi

c# - 将JSON数据反序列化为C#中的任何类型

转载 作者:行者123 更新时间:2023-11-30 17:49:52 26 4
gpt4 key购买 nike

我希望能够将任何类型的数据从 javascript 发送到 C#。基本上,我试图通过包含此对象的 AJAX 调用从 Javascript 端发送一个 JSON 对象 -

AnObject = new Object;
AnObject.value = anyValue;

$.ajax({
type: "POST",
url: "myURL",
data: "{ 'myObject':" + JSON.stringify(AnObject) + "}",
dataType: 'json',
success: function (data) {
//do something
}
});

anyValue 可以是 int、字符串、数组、关联数组、日期等。

在 C# 方面,我需要一个像这样的类 -

public AnyClass {
DataType(?) value;
}

public ActionResult acceptData(AnyClass myObject) {
Here, the data should be deserialized correctly depending on it's type into DataType(?)
}

这可能吗?我确定 C# 中有一些我可以使用的泛型类型?

最佳答案

从技术 Angular 来看,这是可能的。但是你必须自己弄清楚一些重要的细节:

  • 你怎么知道你要构建什么类型的对象?
  • 你将如何构建那种类型的对象?你能假设这个类型有一个默认的构造函数吗?您会使用某种 DI 框架吗?

如果你愿意说所有创建的对象确实需要是 POCO 风格的对象,这就变得非常简单:

public ActionResult acceptData() {
Type type = FigureOutWhatTypeToUse();
object instance = Activator.CreateInstance(type);
// This allows ASP.NET MVC's model binding to do the dirty work,
// initializing the properties of your instance based on the submitted
// parameters.
TryUpdateModel((dynamic) instance, "myObject");
}

如果你想传入一个数组,定义一个对象类型,它有一个带有数组的属性。这样,MVC 就可以识别该属性应该是一个数组并相应地绑定(bind)它这一事实。

PS——这对我来说似乎更具可读性并且更不容易出错:

data: JSON.stringify({ myObject : AnObject }),

关于c# - 将JSON数据反序列化为C#中的任何类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19256260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com