【发布时间】:2020-06-25 07:44:39
【问题描述】:
我有一个发送 JSON 数据的帖子 API。
{
"timestamp": 1592977899880,
"userid": 123
}
这很好,但是当我更改顺序时
{
"userid": 123,
"timestamp": 1592977899880
}
我在 API 中得到 null 注意:- 时间戳字段是整数,我在时间戳中发送 13 位长。但是为什么它在第一个场景中起作用
public HttpResponseMessage dataSync(AnalyticsData request)
这是我期待 JSON 的地方 对于请求字段中的第一个场景,我得到 request.userid = 123 和 请求.timestamp = 0 而对于第二种情况,我得到 请求 = 空
[HttpPost]
公共 HttpResponseMessage 数据同步(AnalyticsData 请求)
{
如果(请求!= null)
{ //..一些东西
}
}
公共类 AnalyticsData
{
公共 int 时间戳 { 获取;放; }
公共 int 用户 ID { 获取;放; }
}
【问题讨论】:
-
第一个“有效”的例子不是有效的 JSON - 逗号都是错误的;你确定你有正确的“工作”和“不工作”的例子吗?这可能也与掩盖事物的溢出问题有关,所以不妨尝试在您在那里时将时间戳更改为
long -
明确地说:不,JSON 中的顺序通常对任何合理的序列化器都无关紧要,而 asp.net-mvc 使用相当合理的序列化器。至于为什么它在这种情况下不起作用:您至少有 2 个已知问题(逗号和溢出);我会先解决这些问题!
-
是的,@MarcGravell JSON 的顺序无关紧要,而且我已将变量更改为 long。但我试图弄清楚为什么它与变量映射的第一种情况即使它超过了 int 限制
-
您的minimal reproducible example 将包含
AnalyticsData的源代码。 -
嘿,添加了@mjwills 示例
标签: c# json asp.net-mvc api post