JSON文字列を逆シリアル化しようとしています
[{ "key" : "1", "value" : "open"}, {"key" : "2", "value" : "closed"}, {"key" : "3", "value" : "pending"}]
C# 配列に。「'System.Array' の型に対して定義されたパラメーターなしのコンストラクターがありません」というエラーが表示されます。私はデータベースから JSON をプルしています。それをデシリアライズして、値にアクセスし、ユーザーが渡したものでデータベースの別のフィールドを更新できるようにしたいと考えていました。データベースに含まれる JSON 文字列は可変である可能性があるため、静的ではなく動的である必要があります。
以前辞書を使ってみましたが、うまくいきませんでした。そのため、配列に逆シリアル化することで別のアプローチを試みており、配列から辞書を作成するつもりでした。
これは、現時点で実装しようとしている方法です...他のいくつかを試しましたが...
IList<Array> ValueArray = new JavaScriptSerializer().Deserialize<IList<Array>>(this.Parameter.ValueList);
//this.Parameter.ValueList just contains my JSON string
独自のクラスを作成せずにこれを行うことはできないと思いますか?
辞書を使ってみたらこうやってみた
Dictionary<string, string> ValueList =
JsonConvert.DeserializeObject<Dictionary<string, string>>(this.Parameter.ValueList);
しかし、このエラーを受け取りました
「現在の JSON 配列 ([1,2,3] など) を型 'System.Collections.Generic.Dictionary`2[System.String,System.String]' に逆シリアル化できません。型には JSON オブジェクトが必要です (例: {"このエラーを修正するには、JSON を JSON オブジェクト (例: {"name":"value"}) に変更するか、逆シリアル化された型を配列または実装する型に変更します。 JSON 配列から逆シリアル化できる List のようなコレクション インターフェイス (ICollection、IList など)。JsonArrayAttribute を型に追加して、強制的に JSON 配列から逆シリアル化することもできます。パス ''、行 1、位置 1."
そこで、代わりに配列を使用してみました。