gpt4 book ai didi

c# - 我可以手动硬编码 JSON 对象以由 ASP.NET Web API 返回吗?

转载 作者:行者123 更新时间:2023-11-30 13:36:48 24 4
gpt4 key购买 nike

我习惯在 Django(类似于 Ruby on Rails)中这样做,在某些情况下我需要硬编码 JSON 响应对象以便客户端能够解释,但我一直在网上到处搜索弄清楚如何使用 ASP.NET Web API 执行此操作,但我找不到任何关于此的信息,ASP.NET Web API 似乎迫使我创建一个类来表示每个 URI Controller 的 JSON 响应。

例如,这是我所知道的手动创建 JSON 响应的唯一方法:

1.) 我首先需要创建类来表示响应对象

public class XYZ_JSON
{
public string PropertyName { get; set; }
public string PropertyValue { get; set; }
}

2.) 然后我需要正确编写 URI Controller ,它将返回我刚刚在上面定义的“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 响应对象的非常简单的方法,它允许我从一个单一的返回非常独特和动态的响应网址。在许多用例中,将返回最多 8 个完全唯一的 Class 对象的列表。

另外,如果我想要完成的是倒退的做事方式,那也没关系。我已经发布了一个非常成功和稳定的 iOS 应用程序,它有一个完美的 Django 后端服务器,以这种方式完美地处理事情,没有任何问题。

有人可以向我解释如何使用 ASP.NET Web API 返回简单的硬编码 JSON 响应吗?

谢谢!

最佳答案

您可以创建 anonymous types在 C# 中,因此您可以使用其中之一来生成硬编码结果。例如:

return new JsonResult
{
Data = new
{
result = "success",
value = "some value"
}
};

澄清一下,上面的代码是针对 ASP.NET MVC 的。如果您使用的是 Web API,那么您可以只返回数据对象,或者使用 IHttpActionResult。匿名类型部分(新{})保持不变。

关于c# - 我可以手动硬编码 JSON 对象以由 ASP.NET Web API 返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29681103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com