私は過去数日間これをいじっていましたが、誰かが問題の原因を明らかにしてくれることを願っています.
私が作成したこのカスタム オブジェクトがあります。
public class WorldInformation
{
public string ID { get; set; }
public string name { get; set; }
}
そして、この JSON データ:
string world = "[{\"id\":\"1016\",\"name\":\"Sea of Sorrows\"}, {\"id\":\"1008\",\"name\":\"Jade Quarry\"},{\"id\":\"1017\",\"name\":\"Tarnished Coast\"},{\"id\":\"1006\",\"name\":\"Sorrow's Furnace\"},{\"id\":\"2014\",\"name\":\"Gunnar's Hold\"}]";
カスタムオブジェクトを逆シリアル化することで、データを正常に保存できます。
List<WorldInformation> worlds = JsonConvert.DeserializeObject<List<WorldInformation>>(world);
しかし...
このようなカスタムオブジェクトを作成すると
public class EventItems
{
public string World_ID { get; set; }
public string Map_ID { get; set; }
public string Event_ID { get; set; }
public string State { get; set; }
}
次のような JSON データがあります。
string eventItem = "{\"events\":[{\"world_id\":1011,\"map_id\":50,\"event_id\":\"BAD81BA0-60CF-4F3B-A341-57C426085D48\",\"state\":\"Active\"},{\"world_id\":1011,\"map_id\":50,\"event_id\":\"330BE72A-5254-4036-ACB6-7AEED05A521C\",\"state\":\"Active\"},{\"world_id\":1011,\"map_id\":21,\"event_id\":\"0AC71429-406B-4B16-9F2F-9342097A50AD\",\"state\":\"Preparation\"},{\"world_id\":1011,\"map_id\":21,\"event_id\":\"C20D9004-DF6A-4217-BF25-7D6B5788A94C\",\"state\":\"Success\"}]}";
逆シリアル化しようとするとエラーが発生する
List<EventItems> events = JsonConvert.DeserializeObject<List<EventItems>>(eventItem);
私が得るエラーメッセージは次のとおりです。
現在の JSON オブジェクト (例: {"name":"value"}) を型 'System.Collections.Generic.List`1[WebApplication1.EventItems]' に逆シリアル化できません3]) 正しく逆シリアル化します。
このエラーを修正するには、JSON を JSON 配列 ([1,2,3] など) に変更するか、逆シリアル化された型を通常の .NET 型 (整数のようなプリミティブ型ではなく、コレクション型ではない) に変更します。 JSON オブジェクトから逆シリアル化できる配列またはリスト)。JsonObjectAttribute を型に追加して、強制的に JSON オブジェクトから逆シリアル化することもできます。
パス「イベント」、1 行目、位置 10。