WebAPI接受整数的不同值

时间:2017-02-06 12:26:54

标签: c# json asp.net-web-api data-conversion

我开发了WebAPI,它接受类和post方法类型。我在这里面临着非常奇怪的情况。

我在下面以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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我在这里说明的原因是JSON 不是有效的 JSON

{
    "MessageID":"fec41da8-655c-4532-af7d-554e1505a663",
    "Number":0009,
}

有效的JSON将是

{
  "MessageID": "fec41da8-655c-4532-af7d-554e1505a663",
  "Number": "0009"
}

如果您将使用我在此处显示的有效JSON,那么您可以轻松地将其序列化为类对象

public class Test
{
    public Guid MessageId { get; set; }
    public int Number { get; set; }
}

我已针对WEB API 2.0对其进行了测试,但它运行正常。

  

在方法中,我接收Number为0 - 但是如果我将0001传递给0008 - 它工作正常,我接收其他为8.只有0009它转换为0表示其他值,它删除其他0。

我没有找到上面这一行是正确的,因为如果我使用你的JSON我在每种情况下都会得到0,即使它在 0001 to 0008 or 0009 之间编号。

答案 1 :(得分:-1)

我们可以覆盖json格式转换函数来处理这些值。

long value2 = text2.StartsWith("0x", StringComparison.OrdinalIgnoreCase) ? 
              Convert.ToInt64(text2, 16) : 
              Convert.ToInt64(text2, 8); // Here OCTAL!!!