gpt4 book ai didi

c# - 将JSON反序列化为Dictionary >

转载 作者:行者123 更新时间:2023-12-03 19:22:07 24 4
gpt4 key购买 nike

我是JSON的新手,所以我可能错过了一些东西。但是,这就是我正在尝试的。
我想反序列化以下类型的JSON

{
"Size":
{
"Creature":
{
"Dragon":
[
"Huge",
"Colossal",
"Mountain-sized"
],

"Wolf":
[
"Pup",
"Fully grown",
"Giant"
]
},

"Building":
[
"Small",
"Medium",
"Large"
]
}
}



JSON的核心功能旨在防止我随时间推移嵌套的方式。对于具有根据其是哪种生物而定的子类型的生物,以及对于建筑物等的子类型。

我尝试使用此代码

using StreamReader r = new StreamReader("Storage.json");
string json = r.ReadToEnd();
CoreStorageDict = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(json);


我想尽可能直接将其反序列化为字典,但是我还没有找到一种好的方法来完成它,而且我想我缺少整个系统的基本知识。

JSON错误还是我的代码错误?还是两者都有?

最佳答案

如果定义以下类:

public class Creature
{
public IList<string> Dragon { get; set; }
public IList<string> Wolf { get; set; }
}

public class Size
{
public Creature Creature { get; set; }
public IList<string> Building { get; set; }
}

public class Example
{
public Size Size { get; set; }
}


然后尝试反序列化您的json即可。您可以根据需要更改类的名称。对于上述名称,您只需执行以下操作:

var result = JsonConvert.DeserializeObject<Example>(json);


您采用的方法有什么问题?

问题是您有嵌套的类型。因此,必须正确声明每个类型,才能进行反序列化工作。

如何找到需要声明的类?

可能有一些工具可以完成这项工作。我使用的是以下一个 JSON Utils。只要您具有有效的json,这些工具就可以自动生成所需的类。如果我是正确的话,Visual Studio也会为您提供这种功能。

关于c# - 将JSON反序列化为Dictionary <string,List <string >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59124845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com