C#Web API中来自控制器的空JSON响应
我正在学习用C#构建web API 我正在测试我的控制器,但是我得到一个空的C#Web API中来自控制器的空JSON响应,c#,json,asp.net-web-api,linq-to-entities,C#,Json,Asp.net Web Api,Linq To Entities,我正在学习用C#构建web API 我正在测试我的控制器,但是我得到一个空的JSON响应 这是我的控制器 public class ClassInfoController : ApiController { private ClassRepository classRepo = new ClassRepository(); public IList<string> getClassListByTerm(string termID) { Lis
JSON
响应
这是我的控制器
public class ClassInfoController : ApiController
{
private ClassRepository classRepo = new ClassRepository();
public IList<string> getClassListByTerm(string termID)
{
List<string> classList = classRepo.getClassListByTerm(termID);
return classList;
}
我从我期望的repository类获得结果
为什么会出现此问题?尝试向API方法添加属性
[HttpGet]
public List<string> getClassListByTerm([FromUri]string termID)
[HttpGet]
公共列表getClassListByTerm([FromUri]字符串termID)
或者您可以使用另一个类对象作为请求数据。
我是说
公共类TermData
{
//如果nessassry[JsonProperty(“TermId”)]
公共字符串TermId{get;set;}
}
[HttpGet]
公共列表getClassListByTerm([FromUri]TermData)
尝试向API方法添加属性
[HttpGet]
public List<string> getClassListByTerm([FromUri]string termID)
[HttpGet]
公共列表getClassListByTerm([FromUri]字符串termID)
或者您可以使用另一个类对象作为请求数据。
我是说
公共类TermData
{
//如果nessassry[JsonProperty(“TermId”)]
公共字符串TermId{get;set;}
}
[HttpGet]
公共列表getClassListByTerm([FromUri]TermData)
我的问题是Visual Studio中的一个Web API项目提供的自动API文档告诉我应该使用以下命令从浏览器调用控制器:http://localhost:51520/api/ClassInfo?termID={316a}
。我不知道,这意味着{}
保留在316a
-我认为它们就像方法签名中用于接收参数的括号,但我假设它们用于将列表
/json
传递给方法(在本例中不相关)。这意味着当我的存储库查询运行时,它没有返回任何内容,因为我没有查找字符串{316a}
如果我使用以下地址调用APIhttp://localhost:51520/api/ClassInfo?termID=316a
之所以有效,是因为字符串316a
被传递到查询
谢谢大家。我的问题是Visual Studio中的一个Web API项目提供的自动API文档告诉我应该使用以下命令从浏览器调用控制器:
http://localhost:51520/api/ClassInfo?termID={316a}
。我不知道,这意味着{}
保留在316a
-我认为它们就像方法签名中用于接收参数的括号,但我假设它们用于将列表
/json
传递给方法(在本例中不相关)。这意味着当我的存储库查询运行时,它没有返回任何内容,因为我没有查找字符串{316a}
如果我使用以下地址调用APIhttp://localhost:51520/api/ClassInfo?termID=316a
之所以有效,是因为字符串316a
被传递到查询
谢谢大家。我有一个继承自DynamicObject的类,该类只返回空JSON(而XML似乎正确返回) 在我的例子中,我能够删除DynamicObject继承,JSON序列化开始工作
//didn't serialize to json, but xml worked
public MyClass : DynamicObject, IMyClass { //... }
//works for json and xml
public MyClass : IMyClass { //... }
不幸的是,我没有机会探究为什么
DynamicObject
会破坏JSON序列化。我有一个从DynamicObject继承的类,该类只会返回空的JSON(而XML似乎正确返回)
在我的例子中,我能够删除DynamicObject继承,JSON序列化开始工作
//didn't serialize to json, but xml worked
public MyClass : DynamicObject, IMyClass { //... }
//works for json and xml
public MyClass : IMyClass { //... }
不幸的是,我没有机会探究为什么
DynamicObject
会破坏JSON序列化。假设向termID
提供相同的输入,这只会得出结论,即客户端没有正确地向您发送数据。如果您向我们展示客户端代码+ajax调用,我们可以进一步帮助您?在getClassListByTerm中设置断点,是否到达?返回带有数据的硬编码列表:新列表{“是”,“这是数据”,“xD”};根据您的解释,我认为Web API没有什么问题。您能否提供有关如何测试控制器的更多详细信息?测试控制器时,您是否检查了传递的termID?请仔细检查测试项目和Web Api项目的连接字符串?我在方法体中硬编码以下内容时获得数据:List classList=new List{“test”,“testData”}代码>返回类列表
假设向termID
提供了相同的输入,这只会导致您的客户端没有以正确的方式正确地向您发送数据。如果您向我们展示客户端代码+ajax调用,我们可以进一步帮助您?在getClassListByTerm中设置断点,是否到达?返回带有数据的硬编码列表:新列表{“是”,“这是数据”,“xD”};根据您的解释,我认为Web API没有什么问题。您能否提供有关如何测试控制器的更多详细信息?测试控制器时,您是否检查了传递的termID?请仔细检查测试项目和Web Api项目的连接字符串?我在方法体中硬编码以下内容时获得数据:List classList=new List{“test”,“testData”}代码>返回类列表代码>
//didn't serialize to json, but xml worked
public MyClass : DynamicObject, IMyClass { //... }
//works for json and xml
public MyClass : IMyClass { //... }