Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何反序列化正在扩展的JSON文件?_C#_Json_Json Deserialization - Fatal编程技术网

C# 如何反序列化正在扩展的JSON文件?

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' }

如何将JSON文件反序列化为C#对象

你能行

    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; }
}