C# 如何反序列化正在扩展的JSON文件?
如何将JSON文件反序列化为C#对象 你能行C# 如何反序列化正在扩展的JSON文件?,c#,json,json-deserialization,C#,Json,Json Deserialization,如何将JSON文件反序列化为C#对象 你能行 string json = @"{ 'arch': { 'name': 'Arch Linux', 'source': 'image' }, 'ubuntu': { 'name': 'Ubuntu', 'source': 'image' }
string json = @"{
'arch': {
'name': 'Arch Linux',
'source': 'image'
},
'ubuntu': {
'name': 'Ubuntu',
'source': 'image'
}
}";
Dictionary<string, Settings> config =
JsonConvert.DeserializeObject<Dictionary<string, Settings>>(json);
您需要安装Newtonsoft.JsonNuGet软件包。如何,请参见此在@UsemeAlehosaini响应中可能存在错误。您的解决方案很可能无法工作,因为Settings类与您尝试反序列化的JSON结构不匹配
public class Arch
{
public string Name { get; set; }
public string Source { get; set; }
}
public class Ubuntu
{
public string Name { get; set; }
public string Source { get; set; }
}
public class Example
{
public Arch Arch { get; set; }
public Ubuntu Ubuntu { get; set; }
}
@JakubWrobel你能试着用这些类代替设置吗?请定义“扩展”。这看起来像是一个完全普通的json文件,搜索反序列化的方法需要付出的努力和在Google中键入标题一样多。到目前为止,您尝试了什么,在哪里失败了。。。关于json反序列化已经有很多问题了,好吧,我会尽力解释。这是c#应用程序的配置文件。用户应该能够向该文件添加更多条目。我想把它转换成一种带索引的口述。为了测试,我自己做了一个简单的口述。但是现在我想使用那个JSON文件而不是口述文件。如果你不想使用
Newtonsoft.JSON
,而想使用System.Text.JSON
,那么在问题中具体指定它。你知道如何使用JsonSerializer.Deserialize
实现吗?@Jakub Wrobel这非常复杂,您需要定义自定义DictionaryConvertor并将其用作一个选项,这是一项巨大的工作,上面的解决方案简单有效。记住KISS(保持简短)@Jakub Wrobel如果你的问题解决了,请不要忘记点击✔️ 计票⬆️ 所以其他人在将来会发现这很有帮助谢谢,祝您编码愉快!
string json = @"{
'arch': {
'name': 'Arch Linux',
'source': 'image'
},
'ubuntu': {
'name': 'Ubuntu',
'source': 'image'
}
}";
Dictionary<string, Settings> config =
JsonConvert.DeserializeObject<Dictionary<string, Settings>>(json);
public class Settings
{
public string Name { get; set; }
public string Source { get; set; }
}
public class Arch
{
public string Name { get; set; }
public string Source { get; set; }
}
public class Ubuntu
{
public string Name { get; set; }
public string Source { get; set; }
}
public class Example
{
public Arch Arch { get; set; }
public Ubuntu Ubuntu { get; set; }
}