2016-12-06 62 views
8

Hello WEB API開發人員!具有自引用類型的ASP.NET Core MVC/WEB API不返回json數組

我嘗試在MVC6中使用我的WEB API返回數組對象時遇到問題。

在調試控制器上,我獲得兩個或更多對象,但結果只發送一個對象的響應。我不知道如何解決這個問題。請幫幫我!

我控制器的方法:

只有1對象
[HttpGet] 
    public IEnumerable<Maquina> Get() 
    { 
     var maquinas = _cobraAppContext.Maquina 
      .Include(m => m.IdMarcaMotorNavigation) 
      .Include(m => m.IdModeloNavigation) 
      .ToList(); 
     return maquinas;//Two or more object obtains :(
    } 

響應,但我的控制器調試告訴我不止一個:

[ 
 
    { 
 
    "id": 1, 
 
    "nombre": "M1", 
 
    "idModelo": 3, 
 
    "serie": "123456", 
 
    "idMarcaMotor": 3, 
 
    "serieMotor": "123456789", 
 
    "descripcion": "ejemplo 123", 
 
    "fechaCreacion": "2016-12-06T08:30:51.307", 
 
    "idMarcaMotorNavigation": { 
 
     "id": 3, 
 
     "nombre": "DAEWO", 
 
     "descripcion": "DAEWO", 
 
     "fechaCreacion": "2016-11-29T15:17:33.223", 
 
     "maquina": [] 
 
    } 
 
    } 
 
]

Postman

Controller debug

enter image description here

+1

你是如何調用這個api終點的? – Vinod

+0

與郵遞員或東西做一個獲取請求 – Alex

+0

這個問題可能在客戶端。如果你可以用你試圖訪問這個api的方式更新你的問題,那將會很有幫助。 – Vinod

回答

4

嘗試另一種形式給出(在構造方法,Startup.cs):

services.AddMvc().AddJsonOptions(options => { 
      options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; 
     }); 
+1

是不是已經是一個永恆的列表? – Alex

+0

所以我認爲這是循環引用。 – raphaelheitor

+0

@raphaelheitor循環引用不會返回,而是拋出異常 – Alex

-1

更改方法簽名IHttpActionResult和你的控制器ApiController方法是這樣的:

public IHttpActionResult Get() 
    { 
     var maquinas = _cobraAppContext.Maquina 
      .Include(m => m.IdMarcaMotorNavigation) 
      .Include(m => m.IdModeloNavigation) 
      .ToList(); 
     return Ok(maquinas);//Two or more object obtains :(
    } 
+0

這是web api – Alex

+0

那麼是什麼?我知道這是一個網絡Api。我不明白你點 –

+0

Web api會序列化枚舉 – Alex

相關問題