我需要在.NET中接收下一个JSON
"currentData":
{
"Name": {"system": "wfdss", "canWrite": true },
"DiscoveryDateTime": { "system": "wfdss", "canWrite": true },
"Code": { "system": "code", "canWrite": false },
...
}
这些元素是动态的,它没有默认元素,所以,我如何定义一个类在下一个模型之后做这个:
public class currentData
{
//TODO
//<Data Element Name>: {
//data element system: <STRING of system>,
//the last system to update data element canWrite: <Boolean>
//true if requesting system may edit data element (based on ADS), otherwise false. }, ...
public List<Property> property { get; set; }
}
public class Property
{
public string system { get; set; }
public string canWrite { get; set; }
}
答案 0 :(得分:1)
如果您需要将动态结构化Json发布到控制器,我有一个坏消息 - 您无法在MVC中自动映射。 MVC模型绑定机制仅适用于严格类型的集合 - 您必须知道结构。
如果使用FormCollection
并手动从中获取值,我可以建议您使用其中一个选项:
[HttpPost]
public JsonResult JsonAction(FormCollection collection)
{
string CurrentDataNameSystem = collection["currentData.Name.system"];
// and so on...
return Json(null);
}
另一种选择是将动态json作为字符串传递给你,然后手动取消它:
[HttpPost]
public JsonResult JsonAction(string json)
{
//You probably want to try desirialize it to many different types you can wrap it with try catch
Newtonsoft.Json.JsonConvert.DeserializeObject<YourObjectType>(jsonString);
return Json(null);
}
无论如何,我的观点是 - 除非你真的需要在MVC中,否则你不应该使用动态json。
我建议你创建包含所有可通过字段但仍然可以为空的对象类型,这样你就可以传递你的Json,它将使用模型绑定MVC机制进行映射,但是某些字段将是null
。
答案 1 :(得分:0)
我认为你得到的类型格式是带有字典的对象。 所以我认为您需要将数据反序列化为此。
/fancybox/source/jquery.fancybox.pack.js