【发布时间】:2017-02-06 12:26:53
【问题描述】:
我开发了接受类和 post 方法类型的 WebAPI。我在这里面临着非常奇怪的情况。
我在下面发布为 json。
{
"MessageID":"fec41da8-655c-4532-af7d-554e1505a663",
"Number":0009,
}
在方法中,我收到的 Number 为 0 - 但如果我将 0001 传递给 0008 - 它工作正常,我收到的其他号码为 8。只有 0009 会转换为其他值的 0,它会删除其他 0。
0002 receives as 2
0009 receives as 0
有什么想法吗?
【问题讨论】:
-
AFAIK,以零开头的数字不是有效的 JSON 数值。我会尝试修复这些值,而不是制定 ASP.NET Web API 来接受它们。
-
如果直到 7 的所有内容都正常工作,那是因为解释为 0008/0009 的八进制数将失败,因为它们不是有效的八进制数(前导零是八进制符号在 JS 中)。这不是 json 的有效值,您不能简单地不提交带有前导零的值或将它们视为字符串吗?
-
是的,我可以,但我只是想知道它是如何工作的,所以我可以改变一种方法并解决。在我的请求中 - 仅收到 0 的响应,那么我该如何更改前导 0?
-
@AlexK。似乎规范没有涵盖八进制数,而解析器可能能够处理它们......
-
如果没有提及,那么我会说它不支持,
var i = 0100在 js 中是64,所以存在歧义,例如 JSON.parse 将在数字中的前导零上失败。跨度>
标签: c# json asp.net-web-api data-conversion