【发布时间】:2020-08-12 08:07:25
【问题描述】:
我正在尝试编写一个函数,该函数接受序列化的 json 对象(与对象定义类(模型)匹配)并给定类型,将其反序列化为该模型。 有几个模型,..在下面的代码中我使用TCustomerModel(只是一个属性类)
从我的 API(s) 中,我想调用此函数,将与我的模型之一匹配的 json 对象传递给它, 并将 ModelType 传递给它(即在本例中为 TCustomerModel 到目前为止,我所看到或尝试过的都不起作用。
作为一个简单的例子。 (这行得通,..但我想要一个函数,只需将 Type 传递给它就可以做到这一点,而不必在每个类型上显式创建 myModel )。
TCustomerModel myModel = JsonConvert.DeserializeObject<TCustomerModel>(jsonModel);
代码:
public class DeserializeModelValidator
{
public Object ValidateModel (Type objectType, object theModel)
{
objectModel = JsonConvert.DeserializeObject<theModel>, typeof(objectType));
// etc
}
}
调用代码:(从 API 中)
DeserializeModelValidator validator = new DeserializeModelValidator();
validator.ValidateModel(typeof(TCustomerModel), objectModel);
【问题讨论】:
-
你想反序列化一个已经反序列化的对象?
JsonConvert.DeserializeObject<theModel>, typeof(objectType));你从字符串反序列化为一个对象,而不是随机的object -
我认为this answer of mine 可能会有所帮助...
-
谢谢,但它给了我一个错误。无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.List`1[Catalyst.Mvc.Controllers.API.TCustomerModel]”,因为该类型需要 JSON 数组(例如 [1,2,3]) 以正确反序列化。
-
DeserializeObject的非泛型重载接受Type作为参数,这是您要找的吗?
标签: c# json asp.net-mvc json-deserialization converters