次のように (Newtonsoft を使用して) JSON データを逆シリアル化し、C# で厳密に型指定されたオブジェクト/リストに変換したいのですが、インデックス付きの参照が参照されたオブジェクトに変換されるようにクラスを定義する方法がわかりません。
{
"Countries": [
{
"Name": "USA",
},
{
"Name": "UK",
},
{
"Name": "JAPAN",
},
],
"Authors": [
{
"DisplayName": "John Doe",
"RealName": "Not John Doe"
},
{
"DisplayName": "Jane Doe",
"RealName": "Not Jane Doe"
},
],
"Books": [
{
"Author": 0,
"Title": "A good read",
"PublishedCountries": "0,1",
},
{
"Author": 0,
"Title": "Another good read",
"PublishedCountries": "0,1",
},
{
"Author": 1,
"Title": "This one is even better",
"PublishedCountries": "0,1,2",
},
],
}
理想的には、次のようなクラスを使用したいと思います。
public class Country
{
public string Name { get; set;}
}
public class AuthorDetails
{
public string DisplayName { get; set; }
public string RealName { get; set; }
}
public class Book
{
public AuthorDetails Author { get; set; }
public string Title { get; set; }
public IEnumerable<Country> PublishedCountries { get; set; }
}
public class ListOfBooks
{
public IEnumerable<Book> Books { get; set; }
}
そして、次のように逆シリアル化します。
var listOfBooks = JsonConvert.DeserializeObject<ListOfBooks>(jsonAsString);
本の JObject の Author プロパティが整数ではなくインデックスであることを Json.Net に伝える方法に行き詰まっています。PublishedCountries についても同様です (インデックスのカンマ区切りのリストです)。