【问题标题】:C# Json to custom classC# Json 到自定义类
【发布时间】:2017-04-03 09:36:18
【问题描述】:

我有 json:

[
     {
        "Name" : "SHA of timestamp",
        "ProjectURL" : "URL to Proj",
        "AccountIdentifier" : "Account Identifier",
        "Repositories":
        {
            "GitLink1": 
            {
                "Login" : "login1",
                "Password"  : "pas1"
            },
            "GitLink2": 
            {
                "Login" : "login2",
                "Password"  : "pas2"
            },  
            
            ...
            
            "GitLink999":
            {
                "Login" : "login999",
                "Password" : "pass999"
            }
        }
    },
    
    ...
    
    {
        Same entry
    }
]

我需要将它填入我创建的类的 IEnumerable 中

public class Git
{
    public string Login { get; set; }
    public string Password { get; set; }
}

public class Repositories
{
    public Git git { get; set; }
}

public class ConfigEntry
{
    public string Name { get; set; }
    public string ProjectURL { get; set; }
    public string AccountIdentifier { get; set; }
    public Repositories Repositories { get; set; }
}

使用

IEnumerable<ConfigurationEntry> config = JsonConvert.DeserializeObject<IEnumerable<ConfigurationEntry>>(CONFIGJSON);

其中 CONFIGJSON 包含第一个 json 文件。

给我这个 ConfigEntry 类的数据:

名称:“填充了一些数据”

项目网址:相同

AccountIdentifier : 相同

存储库:NULL

如何使用配置 JSON 中的所有数据填充 Repositories 字段?

有什么想法吗。

【问题讨论】:

    标签: c# json


    【解决方案1】:

    看起来您可能不应该有 Repositories 类 - 相反,将您的 ConfigEntry.Repositories 属性更改为:

    public Dictionary<string, Git> Repositories { get; set; }
    

    然后你会得到一个字典,其中“GetLink1”的键具有“login1”等登录的值。

    【讨论】:

      【解决方案2】:

      你的类定义不太正确。

      您的“存储库”类只包含一个 Git,但需要是一个字典。

      我想如果你使用这个你会很接近:

      public class Git
      {
          public string Login { get; set; }
          public string Password { get; set; }
      }
      public class ConfigEntry
      {
          public string Name { get; set; }
          public string ProjectURL { get; set; }
          public string AccountIdentifier { get; set; }
          public Dictionary<string,Git> Repositories { get; set; }
      }
      

      您可能还需要一个非泛型 IEnumerable,因此它知道要实际创建哪些对象:

      JsonConvert.DeserializeObject<List<ConfigurationEntry>>(CONFIGJSON);
      

      【讨论】:

        猜你喜欢
        • 2014-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多