你好我有这样的
JSON:
simples: {
EA201SPACC25ANID-126276: {},
GF867HDKLI25ANID-126309: {},
RT211YUIAD912IDO-126310: {},
},
变量的名称总是不同的.我们如何声明C#类的模型?顺便说一下,我正在使用JSON.NET
提前致谢
最佳答案 如果你的Json结构会随着时间的推移保持不变
由于您不能拥有EA201SPACC25ANID-126276这样的属性,这里最简单的方法是:
public class MyCustomModel
{
[JsonProperty("EA201SPACC25ANID-126276")]
public string Something_1 { get; set; }
[JsonProperty("GF867HDKLI25ANID-126309")]
public string Something_2 { get; set; }
[JsonProperty("RT211YUIAD912IDO-126310")]
public string Something_3 { get; set; }
}
比你只是反序列化对象:
JsonConver.DeserializeObject<MyCustomModel>(myJsonString);
如果您的Json属性会随着时间的推移而改变(其他名称)
如果是这种情况,您可以选择接收字典或手动绑定它.对于基本方案,第一个选项应该可以正常工作:
public ActionResult(Dictionary<string, string> model)
但是这种方法在复杂的对象绑定上失败了.为避免这种情况,您可以创建自定义模型绑定器,例如:
public class MyCustomBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var request = controllerContext.RequestContext.HttpContext.Request;
var dictionary = new Dictionary<string, object>();
foreach(var item in request.QueryString.Keys.Cast<string>())
{
// You might want to cast your data into appropriate types...
dictionary.Add(item, request.QueryString[item]);
}
return dictionary;
}
}
在您的控制器上,使用:
public ActionResult Index([ModelBinder(typeof(MyCustomBinder))] Dictionary<string, object> model)