2017-11-15 22 views
0

は、ここに私のJSON形式です。 マイコード:オブジェクトの直列化復元エラー

public static class Config 
{ 
    public const string pathSharedFile = @"Config.json"; 

    public static List<string> ReadGroupes() 
    { 
     StreamReader sr = new StreamReader(pathSharedFile); 
     List<Groupe> Groupes = JsonConvert.DeserializeObject<List<Groupe>>(sr.ReadToEnd()); 
     return new List<string>(); 
    } 
} 

public class Groupe 
{ 
    public Item[] items { get; set; } 
} 
public class Item 
{ 
    public string nom { get; set; } 
    public string type { get; set; } 
} 

私はキャストをしようとすると、エラーがスローされます。誰か助けてくれますか?

+0

は '名前ですgroupe1'が固定されているか、任意の数のプロパティ名が存在する可能性がありますか? – dbc

+0

これはグループ2の後で一意の名前にする必要があります。 – HyrozenT

+0

このjsonはリストではないオブジェクトです。もしjsonが最初の角括弧:["groupe2":{}、 "groupe3":{}、...]にリストされていなければならないが、C#では異なる名前を持つものを逆直列化するのは難しいだろう。それがオブジェクトであると思われるならば、C#クラスはクラスGroupA {public Item [] gorup1、public Item [] group2、...} =動的オブジェクトでなければなりません – MRsa

答えて

2

のGroupeクラスを削除し、このように辞書を使用します。プロパティが動的であるため、辞書を使用して

Dictionary<string, Item[]> Groupes = 
      JsonConvert.DeserializeObject<Dictionary<string, Item[]>>(sr.ReadToEnd()); 

キーで各グループにアクセスできるようになりますが:

var groupContent = Groupes["groupe1"]; 

foreach(var item in groupContent) 
    //Do whatever you want with the item 
関連する問題