我想让R成为可以为空的int(并且是一个可以为空的bool)。我可以点/api/test/1/2
没问题,但/api/test/null/2
导致SerializationException
KeyValueDataContractDeserializer: Error converting to type: Input string was not in a correct format
我尝试了/api/test//2
,但忽略了双斜线并认为它是{Ids}。
如何让R可以为空?
[Route("/Test")]
[Route("/Test/{Ids}")]
[Route("/Test/{R}/{E}")]
[Route("/Test/a/{Ids}/{R}/{E}/{b}/{f}")]
public class Test
{
public long[] Ids { get; set; }
public int? R{get;set;}
public int E{get;set;}
public bool? b { get; set; }
public float f { get; set; }
}
public class TestService : Service
{
public object Get(Test a)
{
return JsonSerializer.SerializeToString(a);
}
}
答案 0 :(得分:3)
路线中的null
被视为字符串文字,显然不是有效数字。基本上你想避免首先传入null(即避免指定它),例如而不是:
/api/test/null/2
你可以这样做:
/api/test?E=2