2017-04-03 14 views
0

に私は、JSONがありますС#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 
    } 
] 

を私は

CONFIGJSONがFRSTが含まれてい
IEnumerable<ConfigurationEntry> config = JsonConvert.DeserializeObject<IEnumerable<ConfigurationEntry>>(CONFIGJSON); 

を使用して、私の作成したクラス

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をでそれを埋めるために必要がありますjsonファイル。

名:

ProjectURL "いくつかのデータで埋め":同じ

AccountIdentifier:同じ

リポジトリ:NULL

は私にConfigEntryクラスのこのデータを提供します

どのように入力すればいいですか私は設定JSONで持っているすべてのデータとリポジトリのフィールド?

アイデアはありますか?

答えて

5

それはあなたがおそらくRepositoriesクラスを持つべきではないように見えます - 代わりにあなたのConfigEntry.Repositoriesプロパティを変更します。

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

その後、あなたは「GetLink1」のキーを持つ値を持つ辞書を取得します"login1"などのログイン

0

あなたのクラス定義は正しくありません。

あなたの「リポジトリ」クラスには、単一の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); 
関連する問題