我有一個非常不受歡迎的情況,它要求我反序列化JSON.NET中值爲字段名的JSON。假設我有以下的JSON這是非常正確的結構:反序列化JSON.NET中值爲字段名稱的JSON
{
"name": "tugberk",
"roles": [
{ "id": "1", "name": "admin" },
{ "id": "2", "name": "guest" }
]
}
它很容易與JSON.NET反序列化這CLR對象:
class Program
{
static void Main(string[] args)
{
var camelCaseSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var text = File.ReadAllText("user_normal.txt");
var obj = JsonConvert.DeserializeObject<User>(text, camelCaseSettings);
}
}
public class User
{
public string Name { get; set; }
public Role[] Roles { get; set; }
}
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
}
然而,在我目前的情況下,我具有以下可怕JSON其等同於上述的在JSON值方面:
{
"name": "tugberk",
"roles": {
"1": { "name": "admin" },
"2": { "name": "guest" }
}
}
正如你可以看到,roles
字段不是陣列;它是一個包含其他值作爲對象的唯一鍵作爲其字段名稱的對象(這太可怕了)。使用JSON.NET將此JSON反序列化到User
類的最佳方法是什麼?