我的解决方案中有多个Json实体。例如:
[DbName("school")]
public class School
{
[JsonProperty("type")]
public string Type{ get; set; }
[JsonProperty("name")]
public string Name{ get; set; }
[JsonProperty("city")]
public string City{ get; set; }
}
[DbName("hospital")]
public class Hospital
{
[JsonProperty("type")]
public string Type{ get; set; }
[JsonProperty("name")]
public string Name{ get; set; }
[JsonProperty("city")]
public string City{ get; set; }
}
我有一个处理帖子请求的web api。请求来自JSON而不是字符串。我需要编写一个方法来处理所有请求,然后我将决定即将到来的对象的json类型:
[HttpPost]
public ActionResult CommonMethod(dynamic jsonObj)
{
if(jsonObj.Type == "health")
Hospital hospital = ConvertDynamicJson(jsonObj, hospital);
else if(jsonObj.Type == "education")
School school = ConvertDynamicJson(jsonObj, school);
...
}
我看到很多关于动态json转换的例子,但几乎所有的例子都使用字符串json数据。
由于
答案 0 :(得分:1)
请求来自JSON而不是字符串
我假设你试图告诉动作选择器解析的请求并作为对象传递。它不再是Json格式化的字符串。
此外,您无法像这样确定动态对象。您可以合并模型,而不是尝试使用动态对象。
public class CommonActionInput
{
public School School{ get; set; }
public Hospital Hospital{ get; set; }
}
您可以确定将哪个对象传递给操作。
ActionResult CommonMethod(CommonActionInput input)
{
if(input.School != null)
{
}
if(input.Hospital != null)
{
}
}