【发布时间】:2015-06-23 05:40:33
【问题描述】:
我习惯于在 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; }
}
2.) 然后我需要正确编写 URI 控制器,该控制器将返回我刚刚在上面定义的“XYZ_JSON”:
// GET: api/ReturnJSON
public XYZ_JSON Get()
{
XYZ_JSON test = new XYZ_JSON { PropertyName = "Romulus", PropertyValue = "123123" };
return test;
}
将产生类似以下内容的 http 响应:
200 正常
{"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
}
上面的 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"}
}
上面的设计模式是我试图用 ASP.NET Web API 完成的,这是一种返回半硬编码 JSON 响应对象的非常简单的方法,它允许我从单个返回非常独特和动态的响应URI。将会有许多用例,其中将返回最多 8 个完全唯一的 Class 对象的列表。
另外,如果我想要完成的是倒退的做事方式,那也没关系。我已经发布了一个非常成功且稳定的 iOS 应用程序,它带有完美无瑕的 Django 后端服务器,以这种方式完美地处理事情,没有任何问题。
有人可以向我解释如何使用 ASP.NET Web API 返回一个简单的硬编码 JSON 响应吗?
谢谢!
【问题讨论】:
-
旁白:你真的应该使用状态码。
-
状态码是什么意思?@DanielA.White
-
http/rest 使用状态码来报告不同的情况。比如 404 表示找到的东西,但 200 表示结果。
-
@Legends HTTP status codes.
标签: c# asp.net json asp.net-mvc asp.net-web-api