Mat*_*zuk 3 c# asp.net asp.net-mvc json asp.net-web-api
我习惯在Django(类似于Ruby on Rails)中执行此操作,在某些情况下,我需要对JSON响应对象进行硬编码,以便客户端能够解释,但是我一直在网上到处搜索以弄清楚如何要使用ASP.NET Web API做到这一点,而我却找不到任何东西,ASP.NET Web API似乎迫使我创建一个类来表示每个URI控制器的JSON响应。
例如,这是我手动创建JSON响应的唯一途径:
1.)我首先需要创建代表响应对象的类
public class XYZ_JSON
{
public string PropertyName { get; set; }
public string PropertyValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
2)然后,我需要正确地编写URI控制器,该控制器将返回上面刚刚定义的“ XYZ_JSON”:
// GET: api/ReturnJSON
public XYZ_JSON Get()
{
XYZ_JSON test = new XYZ_JSON { PropertyName = "Romulus", PropertyValue = "123123" };
return test;
}
Run Code Online (Sandbox Code Playgroud)
将产生类似以下内容的http响应:
200 OK
{"PropertyName":"Romulus", "PropertyValue":"123123"}
整个JSON设计模式类都很酷,但它并没有帮助,并且在尝试将一个类作为包含多个类的JSON对象返回时,实际上会使情况变得更糟,例如:
public class XYZ_JSON
{
public string PropertyName { get; set; }
public string PropertyValue { get; set; }
public List<ComplexObject> objects { get; set; } // <- do not want
}
Run Code Online (Sandbox Code Playgroud)
上面的JSON响应对象并不那么复杂,但是对于我要完成的工作,我必须将一个类列表放在一个类列表中的一个类列表中,而我无法在其中进行开发除非我花了一个星期,这真是荒谬的。
我需要能够以这种方式返回JSON响应:
// GET: api/ReturnJSON
public JSON_Response Get(string id)
{
// do some SQL querying here to grab the model or what have you.
if (somethingGoesWrong = true)
return {"result":"fail"}
else
return {"result":"success","value":"some value goes here"}
}
Run Code Online (Sandbox Code Playgroud)
上面的设计模式是我要使用ASP.NET Web API来完成的工作,这是一种返回半硬编码JSON响应对象的非常简单的方法,它使我可以从单个URI返回非常独特且动态的响应。在许多用例中,将返回最多8个完全唯一的Class对象的列表。
另外,如果我要完成的工作是做事的倒退方式,那很好。我已经发布了一个非常成功且稳定的iOS应用程序,该应用程序具有完美的Django后端服务器,可以完美地处理所有问题。
有人可以向我解释如何使用ASP.NET Web API返回简单的硬编码JSON响应吗?
谢谢!
您可以在C#中创建匿名类型,因此可以使用其中一种来生成硬编码结果。例如:
return new JsonResult
{
Data = new
{
result = "success",
value = "some value"
}
};
Run Code Online (Sandbox Code Playgroud)
为了澄清,上面的代码是针对ASP.NET MVC的。如果您使用的是Web API,则可以只返回数据对象,也可以使用IHttpActionResult。匿名类型部分(new {})保持不变。
| 归档时间: |
|
| 查看次数: |
7496 次 |
| 最近记录: |