0

PowerShell を使用して Active Directory からの情報を表示する C# のアプリケーションがあります。

class userps
{
    public string Name { get; set; }
    public bool Enabled { get; set; }
}

PSObject[] results = pipeline.Invoke().ToArray();
List<userps> listUserps = new List<userps>();
foreach (PSObject obj in results)
{
     lista = JsonConvert.DeserializeObject<List<userps>>(obj.ToString());
}

オブジェクトが少なくとも 2 つの要素のデータを返す場合、たとえば次のようになります。

[
  {
    "Name":"xxx",
    "Enabled":true
  },
  {
    "Name":"yyy",
    "Enabled":true
  }
]

その後、すべて問題ありません、List.Count = 2。ただし、1 つの要素を返す場合:

[
  {
    "Name":"xxx",
    "Enabled":true
  }
]

次にList.Count = 0 で、例外があります。

Newtonsoft.Json.JsonSerializationException: 「現在の JSON オブジェクト (例: {"name":"value"}) を型 'System.Collections.Generic.List`1[ConsoleApp1.userps]' に逆シリアル化できません。型には JSON 配列が必要なためです(例: [1,2,3]) 正しく逆シリアル化します。
このエラーを修正するには、JSON を JSON 配列 ([1,2,3] など) に変更するか、逆シリアル化された型を通常の .NET 型 (整数のようなプリミティブ型ではなく、コレクション型ではない) に変更します。 JSON オブジェクトから逆シリアル化できる配列またはリスト)。
JsonObjectAttribute を型に追加して、強制的に JSON オブジェクトから逆シリアル化することもできます。
パス「名前」、2 行目、11 番目の位置。」</p>

この問題を解決して、1 つの要素と複数の要素で機能するようにするにはどうすればよいですか?

4

1 に答える 1