2017-06-06 51 views
0

我第一次實現了一個從Web客戶端接收JObject然後反序列化到我感興趣的對象的WebAPI POST。 但是當我檢查生成的對象時,我發現所有的字段都被適當地填充,除了那些意味着整數的字段。整數類型的JSON反序列化錯誤 - C#

這是我POST方法的一部分

// POST: api/PresupuestosApi 
    [ResponseType(typeof(Presupuesto))] 
    public async Task<IHttpActionResult> PostPresupuesto([FromBody]JObject presupuesto) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 
     try 
     { 
      Presupuesto p = presupuesto.ToObject<Presupuesto>(); 

我的JSON是這樣的:

{ 
"sTitulo": "Agentasa", 
"cSolicitante": 
{ 
    "eRol": "SOLICITANTE", 
    "sEmail": "[email protected]", 
    "iTelefono": "122299935", 
    "sNombre": "Clau", 
    "sApellido": "Clau" 
}, 
"cTrabajo": 
{ 
    "SNombreTrabajo": "Agenda" 

}, 
"sMaterial": "sadsa", 
"sDimAbierto": "12x22", 
"sDimCerrado": "12x155", 
"sImpresion": "Una cara", 
"fGramaje": 12.5, 
"iCantidad": 122, 
} 

而且我Presupuesto類是這樣的:

public class Presupuesto 
{ 
    private int iIdPresupuesto; 
    private string sTitulo; 
    private Solicitante cSolicitante; 
    private Trabajo cTrabajo; 
    private string sMaterial; 
    private string sDimAbierto; 
    private string sDimCerrado; 
    private float fGramaje; 
    private string sImpresion; 
    private int iCantidad; 
    } 

所以,在調試的時候我看到這個:

p object

我失去了爲什麼它正確解析每一個其他類型,但int。 關於此主題的任何建議?我需要強調的是我之前從未使用過WebAPI。

+0

您的屏幕截圖中只有一個int,它看起來與JSON中的值相同。究竟是什麼問題? – moreON

+0

你是否在客戶端設置了任何內容類型標題,特別是在ur angular應用程序的http.post方法中?爲什麼不直接將發佈的值綁定到Presupuesto對象? –

+0

@moreON這裏唯一的int是iCantidad,它被設置爲0x0000007a(這是什麼?一個內存位置?)。它不應該是122,就像我在JSON中提交的int? – emmaielle

回答

2

0x0000007a十六進制= 122 Dec.檢查您的調試器設置。調試器似乎被設置爲以十六進制顯示整數。