C# 在.NET中反序列化JSON响应时处理空字典

C# 在.NET中反序列化JSON响应时处理空字典,c#,json,json.net,C#,Json,Json.net,JSON响应的结构为 Dictionary<string,Dictionary<string,double>> 即使尝试下面的代码:它也会给出相同的错误 var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberH

JSON响应的结构为

Dictionary<string,Dictionary<string,double>>
即使尝试下面的代码:它也会给出相同的错误

var settings = new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore,
                    MissingMemberHandling = MissingMemberHandling.Ignore
                };

var json_response = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, double>>>(response, settings);
var设置=新的JsonSerializerSettings
{
NullValueHandling=NullValueHandling.Ignore,
MissingMemberHandling=MissingMemberHandling.Ignore
};
var json_response=JsonConvert.DeserializeObject(响应,设置);
如何处理此错误以及处理此错误的最佳实践是什么

导致错误的JSON示例


在执行此反序列化之前,没有任何东西可以阻止您检查响应是否为空集或坏值。我总是这样做。:)

在执行此反序列化之前,没有任何东西可以阻止您检查响应是否为空集或坏值。我总是这样做。:)

看到你的JSON后,我认为问题在于你的JSON本身。不确定,因为您正在使用可视化工具。“{…很多东西…}”无法正确解析,因为里面有引号

我将把您的原始JSON带到,看看它有什么要说的。一旦你解决了这个问题,你可能会停止抛出错误。顺便说一句,你的第一个“字符串”51325。。。不是JSON世界中的字符串,而是一个数字。它需要用引号括起来。同样,这可能是可视化工具


别忘了看看那些JSON规则

看到你的JSON后,我认为问题在于你的JSON本身。不确定,因为您正在使用可视化工具。“{…很多东西…}”无法正确解析,因为里面有引号

我将把您的原始JSON带到,看看它有什么要说的。一旦你解决了这个问题,你可能会停止抛出错误。顺便说一句,你的第一个“字符串”51325。。。不是JSON世界中的字符串,而是一个数字。它需要用引号括起来。同样,这可能是可视化工具


别忘了看看那些JSON规则

最佳实践是不发送空字典,并且应该始终发送
null
而不是
{}

最佳实践是不发送空字典,并且应该始终发送
null
而不是
{}

我看不到您反序列化的JSON响应
Dictionary
正是您要反序列化到的类型。@RoadRunner您想要示例响应还是响应?最后一行代码正在用于deserialization@Kitwradr首先,你为什么有
{}
?那是一个空对象。并且
{}
不为空,因此您的设置将不起作用。另外,
Json.NET
要求字典是
对象
null
。看看这个问题:请分享json示例,它会导致一个错误。在问题中添加了屏幕截图。我看不到您反序列化的json响应
Dictionary
正是您要反序列化到的类型。@RoadRunner您想要示例响应还是响应?最后一行代码正在用于deserialization@Kitwradr首先,你为什么有
{}
?那是一个空对象。并且
{}
不为空,因此您的设置将不起作用。另外,
Json.NET
要求字典是
对象
null
。看一看这个问题:请分享json示例,它会导致一个错误。在问题中添加了屏幕截图。我们如何检查内部字典是否为空@Rich K.我们如何检查内部字典是否为空@里奇K。
var settings = new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore,
                    MissingMemberHandling = MissingMemberHandling.Ignore
                };

var json_response = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, double>>>(response, settings);