我将这种json发送到asp.net web api行动。
{
"keys": {
"2a":["C",,,,,"0",,"0"]
}
}
这个json与我的asp.net 4.5 web api 2动作的请求主体完全相同。
[RoutePrefix("api/TImport")]
[Authorize]
public class TImportController : ApiController
{
[Route("")]
[HttpPost]
public async Task<TImportResult> Post(TImportParameters parameters)
{
// parameters.Keys["2a"] got deserialized as array[3] {"C","0","0" } :((
return await new TImport().RunAsync(parameters);
}
所发生的是2a被反序列化为3个元素的数组,而不是8个元素,其中空元素或空元素为2到6和7。
如何将跳过的数组元素反序列化为默认值(空值或空字符串)?
答案 0 :(得分:1)
这是一个无效的json字符串。虽然一些json解析器忽略了错误的语法。并且C#
/ javascript
不允许您创建以数字开头的属性(在本例中为2a
)[JSON.Net doesn't complain though
]。 json字符串应包含以逗号(key/value
)分隔的,
。