【问题标题】:Json with null value deserialize issue具有空值反序列化问题的 Json
【发布时间】: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&lt;double?&gt; 然后过滤呢? 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/8WJn2dvalJson 真的是字符串,还是JArray
  • 这里过滤演示:dotnetfiddle.net/6SIDvc。这就是你想要的吗?如果没有,请参阅Json.Net: How to ignore null elements in array deserializing a JSON,您的问题可能与其中重复;同意吗?

标签: json json.net


【解决方案1】:

just而不是double use double?,在Visual Studio中测试过,完全没有问题,一切正常。

double?[] d = JsonConvert.DeserializeObject<double?[]>(json);

【讨论】:

  • 恐怕这并不能解决问题。仍然与描述中的错误相同。
  • @Jim 我在发布之前对其进行了测试。没有任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 2021-05-28
相关资源
最近更新 更多