Working with Json.net and Web API



经过多次争论,我终于得到了Json结果,使其在具有关联的类的web api中正常工作:

    public string GetAll()
    {
        var order =_repository.GetAll();
        var settings = new JsonSerializerSettings
               {
                   ReferenceLoopHandling = ReferenceLoopHandling.Ignore
               };
        return JsonConvert.SerializeObject(order, settings);
    }

但当我在浏览器或Fiddler中进行测试时,而不是像这样的典型测试

(A)

     "Books":
        [  
           {    
             "Id": "1",  
             "Name": "Book1", 
             "Authors": 
                [
                  { 
                    ....... 
                  }
               ]  
           } 
       ] 

(B)我得到这个:

"[{\"Id\":1,\"Name\":\"Book1\",\"Authors\":[{\"Id\":1,"Person\":null,\"Books\":[}\"Id \":3,\"Name \":"Book3\",\"Authors\":[{\"Id":4,\"PersonId":null,"Books":[{\"Id\":2,\"Name:":"Book2\","作者":[{\"Id\":2,\"PersonId\":2,\"Person\":null,\"Books":….

有人能告诉我我必须做什么才能把它格式化成上面的A.吗?

感谢

更新:

BTW,格式化。缩进使情况更糟:

"[\r\n{\r\n\r\n \"Id\":1,\r\n\r\n \"Name \":\"Book1\",\r\n \"Authors\":[\r\n{\r\n \"Id\":1、\r\n \"PersonId":1。:[\r\n{\r\n\r\n \"Id \":3,\r\n \"Name \":\"Book3\",\r\n\r\n \"作者\":[\r\n{\r\n\r\n \"Id\":4,\r\n \"PersonId":4、\r\n \"人员\":{\r\n \"Id\":4;\r\n \"名字\":\"朱莉\",\r\n

传统方法是API控制器返回HttpResponseMessage或集合对象,但不返回已串行化的对象。MediaTypeFormatter对象将为您处理这些问题。

看起来发生的情况是,您的控制器返回了一个的字符串,然后被转换为JSON表示形式(因为JSON的MediaTypeFormatter)。尝试将控制器更改为只返回对象集合(而不将其串行化为字符串),它应该对您有效。

设置。格式化=格式化。缩进的;

只是好奇。。。你为什么使用JsonMediaTypeFormatter来处理写响应的问题?。。。我看到您正在将它显式序列化为json。。。

我认为这里的问题是JSON被序列化了两次,一次由您序列化,另一次由WebAPI序列化。删除序列化,一切都会好起来的。

相关内容

  • 没有找到相关文章

最新更新