【发布时间】:2022-01-17 22:48:40
【问题描述】:
我正在尝试将第一个值等于 null 的 json 以下反序列化为带有双精度的简单数组。但是我收到错误The best overloaded method match for 'Newtonsoft.Json.JsonConvert.DeserializeObject<double[]>(string, params Newtonsoft.Json.JsonConverter[])' has some invalid arguments
{[
null,
0.1,
0.2,
0.3
]}
代码是
var values = JsonConvert.DeserializeObject<double[]>(valJson, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
});
我尝试了多种配置,即 NullValueHandling.Include 没有任何成功。代码有什么问题?
【问题讨论】:
-
1) 2) 为什么不直接反序列化为
List<double?>然后过滤呢? 2)您的 JSON 格式错误。它不应该有外部大括号{ }。这可能只是因为 Visual Studio 为您“帮助”可视化了 JSON,所以您能否通过检查原始 JSON 来确认大括号不存在? -
顺便说一句,我试图重现您的问题,但我没有收到您所看到的编译错误。相反,我收到了运行时错误
Newtonsoft.Json.JsonSerializationException: Error converting value {null} to type 'System.Double'. Path '[0]', line 2, position 6.。见dotnetfiddle.net/8WJn2d。valJson真的是字符串,还是JArray? -
这里过滤演示:dotnetfiddle.net/6SIDvc。这就是你想要的吗?如果没有,请参阅Json.Net: How to ignore null elements in array deserializing a JSON,您的问题可能与其中重复;同意吗?