在MVC4项目中使用Json.NET序列化程序

Cra*_*igB 6 asp.net-mvc serialization json.net asp.net-web-api

我开始学习Json.NET,但是我在使用它的序列化器时遇到了麻烦.我有一个带有Web.API服务的新MVC4项目:

public class PTE_TestsController : ApiController {

  PTE_TestsRepository _repository = new PTE_TestsRepository();

  // GET /api/PTE_Tests/5
  public HttpResponseMessage<string> Get(int id) {
    try {
       PTE_Test test = _repository.GetTest(id);
       return new HttpResponseMessage<string>(JsonConvert.SerializeObject(test));
    } catch {
       return new HttpResponseMessage<string>(HttpStatusCode.NotFound);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

JsonConvert.SerializeObject()按预期工作并返回一个字符串.我的Web.API控制器将其作为HttpResponseMessage的一部分返回.在Fiddler中查看时,最终结果不是JSON数据,而是再次序列化JSON数据(我认为):

"{\"ID\":1,\"Name\":\"Talar Tilt\",\"TagID\":1,\"PracticeID\":1,
   \"SpecificAreaID\":1,\"TypeID\":1,\"VideoID\":1,\"PicID\":1}"
Run Code Online (Sandbox Code Playgroud)

有人知道如何关闭默认的序列化程序,以便我可以直接使用Json.NET吗?顺便说一句,我没有使用默认的序列化程序,因为我无法弄清楚如何使它适用于复杂的对象(PTE_Test最终将包含List类型的成员).

或者,如果有人可以解释如何使用带有复杂对象的默认序列化程序,它也将解决我的问题.MSDN的解释对我没有帮助.

Ali*_*tad 5

Rick Strahl在这里有一个博客,里面有一个可行的代码.