【发布时间】:2018-12-24 01:25:39
【问题描述】:
我正在为 Angular 前端编写 C# api 后端。我以前在其他项目中这样做过,以前我总是从 c# 返回一个对象,而在邮递员或 Angular 中我能够读取该对象。在 postman 中,它被整齐地格式化为 json。
例如,我曾经有一个class Person 和一个控制器PersonController。在PersonController 中,我可以有一个方法Get() 并且Get 会是这样的
public Person Get() {
Person p = new Person();
...
return p;
}
我应该打电话给 Angular 的 PersonController.Get,我会得到这个人。但是由于某种原因,现在我在一个新项目中这样做,我得到的只是[Person]——而不是可扩展的 json。
这是为什么?
我知道我看到了差异。开发人员花了一些时间将其作为字符串返回:
JavaScriptSerializer json = new JavaScriptSerializer()
{
MaxJsonLength = 3000;
};
strJson = json.Serialize(model);
return strJson;
但我想返回实际对象。我发现解析它会慢得多。
编辑:
这是我的实际控制人:
public class PersonController : Controller
{
private readonly IPersonService personService;
public PersonController()
{
presonService = new PersonService();
}
public async Task<JArray> Get(int? id)
{
var model = await personService.GetInfo(id, ConnHelper.ConnectionString());
JArray a = (JArray)JToken.FromObject(model);
return a;
//return model;
}
public async Task<List<Person>> GetObject(int? id)
{
var model = await personService.GetInfo(id, ConnHelper.ConnectionString());
return model;
}
}
【问题讨论】:
-
向我们展示您的控制器方法
-
我做到了。我写出来的想法完全一样。
-
编辑您的问题并包含该控制器操作
-
它就在那里:public Person Get(){ Person p = new Person(); ... 返回 p; }
-
你在哪里找到序列化的代码?