json 将字典的字典反序列化为字典〈string,object>

4sup72z8  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(156)

我用C#将一个名为state1的字典序列化为json,代码如下:

string json = JsonConvert.SerializeObject(state1, Formatting.Indented);

这个字典的值是另一个字典,当我将json文件反序列化回字典时,这些值不会反序列化为字典(我无法将object转换回Dictionary<string, object>):

var values = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);

如何正确地反序列化JSON?

c3frrgcw

c3frrgcw1#

如果你想恢复原来的形状,你需要在反序列化时使用原来的类型。
如果像您的评论中所显示的那样,它是object的字典的字典,那么在反序列化时需要使用以下代码:

var values = JsonConvert
    .DeserializeObject<Dictionary<string, Dictionary<string, object>>>(json);

如果您需要将其视为Dictionary<string, object>,同时仍然确保内部字典内容被反序列化为字典(而不是JObject),则可以通过以下方式对其进行“强制转换”(按照this answer):

var values = JsonConvert
    .DeserializeObject<Dictionary<string, Dictionary<string, object>>>(json)
    .ToDictionary(x => x.Key, x => (object)x.Value);

相关问题