2017-12-30 18 views
0

私のクラスにEntityFieldの別のリストを含むSyncEntityのリストを表示したいのですが、出力として "JSONReader.SyncEntity"のみを取得しました 出力をリストSyncEntity。以下は私のコードスニペットです。以下はJSONファイルはC#のクラスオブジェクトに変換できません

namespace JSONReader 
{ 
public class SyncEntity 
{ 
    public string Name { get; set; } 
    public string Id { get; set; } 
    public string Modified { get; set; } 
    public List<EntityField> EntityFields { get; set; } 
} 
public class EntityField 
{ 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public string Value { get; set; } 
} 
public class RootObject 
{ 
    public List<SyncEntity> SyncEntity { get; set; } 
} 
} 

私のメインクラスです:

以下
class Program 
{ 
    static void Main() 
    { 
     ExecuteEmployeeSearch(); 
     Console.ReadLine(); 
    } 

    static void ExecuteEmployeeSearch() 
    { 
     List<SyncEntity> datalist = JsonConvert.DeserializeObject<List<SyncEntity>>(File.ReadAllText(@"E:\\JsonDemo.json")); 
     datalist.ForEach(Console.WriteLine); 
    } 
} 

は私のJSON形式です:

私は、エンティティのフィールドの一覧にSyncEntityの一覧を取得するには逃した何
[{ 
"SyncEntity": [{ 
    "Name": "Vivek", 
    "Id": "24", 
    "Modified": "30-Dec-2017", 
    "EntityFields": [{ 
      "Name": "Absolute No", 
      "Type": "String", 
      "Value": "string" 
     }, 
     { 
      "Name": "Description", 
      "Type": "String", 
      "Value": "String" 
     } 
    ] 
}] 
}] 

、のおかげで詳細

答えて

0

JSONの構造は、RootObjectのリストを要求する必要があることを示唆していますデシリアライズ時。私はあなたにもないあなたJSONファイル内の配列として、オブジェクトとしてSyncEntityを定義する必要があると推測している。この

var data = JsonConvert.DeserializeObject<List<RootObject>>(File.ReadAllText(@"E:\\JsonDemo.json")); 
data.ForEach(Console.WriteLine); 

を試してみてください。それは上記の場合には、この

[{ 
    "Name": "Vivek", 
    "Id": "24", 
    "Modified": "30-Dec-2017", 
    "EntityFields": [{ 
      "Name": "Absolute No", 
      "Type": "String", 
      "Value": "string" 
     }, 
     { 
      "Name": "Description", 
      "Type": "String", 
      "Value": "String" 
     } 
    ] 
}] 

のようなものを見た場合、あなたの新しいモデルクラスは、この後、次の構造

public class EntityField 
{ 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public string Value { get; set; } 
} 

public class SyncEntity 
{ 
    public string Name { get; set; } 
    public string Id { get; set; } 
    public string Modified { get; set; } 
    public List<EntityField> EntityFields { get; set; } 
} 

を持っている必要があり、あなたが今List<SyncEntity>にデシリアライズすることができ、より理にかなっています。データを表示するには、このリストを繰り返し、関連するプロパティを印刷する必要があります。

var data = JsonConvert.DeserializeObject<List<SyncEntity>>(File.ReadAllText(@"E:\\JsonDemo.json")); 
data.ForEach(se => 
{ 
    Console.WriteLine("The sync entity name is " + se.Name + ". And it has the following fields:"); 
    se.EntityFields.ForEach(ef => 
    { 
     Console.WriteLine("{0} of type {1} with value {2}", ef.Name, ef.Type, ef.Value); 
    }); 
}); 

私はこれが役立つことを望みます。

+0

ありがとうございます@Octavianに感謝していますが、 "JSONReader.RootObject"と同じ古い出力を与えました –

+0

@MayurChaudhariこれは、オブジェクトを引数としてConsole.WriteLineを呼び出しているために起こっています。 JSON構造体を変更できますか、現在の構造体に固執する必要がありますか? –

+0

あなたはどんな構造を意味していますか?私は他の構造については考えていません。私はJsonに新しいです。もし私が現在の構造に固執したいのであれば、私はそれを行うことができます。構造を変更すれば、私のクラスdefinationを変更できますか? –

関連する問題