【发布时间】:2017-06-07 07:57:59
【问题描述】:
我第一次在 WebAPI 中实现来自 Angular 客户端的 POST,该客户端接收一个 JObject,然后我将其反序列化为我感兴趣的对象。 但是当我检查生成的对象时,我发现所有字段都被适当地填充了,除了那些应该是整数的字段。
这是我的 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": "bla@sdlfkjsf.com",
"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;
}
所以,在调试时我看到了这个:
我不知道为什么它可以正确解析除 int 之外的所有其他类型。 关于这个主题有什么建议吗?我需要强调我以前从未使用过 WebAPI。
【问题讨论】:
-
您的屏幕截图中只有一个 int,它的值似乎与 JSON 中的值相同。究竟是什么问题?
-
您是否在客户端设置任何内容类型标头,特别是在您的 Angular 应用程序的 http.post 方法上?为什么不直接将发布的值绑定到 Presupuesto 对象中?
-
@moreON 这里唯一的 int 是 iCantidad,它被设置为 0x0000007a(这是什么?一个内存位置?)。不应该是 122,就像我在 JSON 中提交的 int 一样吗?
-
0x0000007a十六进制 =122十二月 -
@emmaielle 检查您的调试器设置。 stackoverflow.com/questions/3354453/…
标签: c# json asp.net-web-api deserialization