2017-06-06 3 views
0

Je réalise pour la première fois un POST en WebAPI à partir d'un client Angular qui reçoit un JObject que je désérialise ensuite sur mes objets d'intérêt. Mais quand je vérifie l'objet résultant, je vois que tous les champs sont correctement remplis sauf ceux qui sont destinés à être des entiers.Erreur de désérialisation JSON sur les types entiers - C#

Cela fait partie de ma méthode 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>(); 

Mon JSON ressemble à ceci:

{ 
"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, 
} 

Et ma Presupuesto classe est la suivante:

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; 
    } 

Ainsi, lors du débogage I voir ceci:

p object

Je ne comprends pas pourquoi il analyse correctement tous les types sauf int. Des suggestions à ce sujet? Je dois souligner que je n'ai jamais travaillé avec WebAPI auparavant.

+0

Il n'y a qu'un int dans votre capture d'écran et il semble avoir la même valeur que dans le JSON. Quel est le problème exactement? – moreON

+0

définissez-vous un en-tête de type de contenu côté client, en particulier sur la méthode http.post de votre application ang angular? Et pourquoi ne pas directement lier les valeurs affichées dans un objet Presupuesto? –

+0

@moreON Le seul int ici est iCantidad, et il est mis à 0x0000007a (qu'est-ce que c'est? Un emplacement de mémoire?). Ne devrait-il pas être 122, comme le int je soumis dans le JSON? – emmaielle

Répondre

2

0x0000007a dans Hex = 122 en décembre Vérifiez vos paramètres de débogage. Le débogueur semble être configuré pour afficher des entiers en hexadécimal.