JSON.NET按顺序从列表中反序列化对象到列表

时间:2013-01-10 23:20:21

标签: c# json json.net

我试图按顺序将Json对象反序列化为动态列表,所以我有:

JSON:

   string json = "{'elements':[
                     {'EntityA':[
                               {'name ':'Jhon'}
                               ],
                      'EntityB':[
                               {'title' : 'car'}
                               ],
                      'EntityB':[
                               {'title':'aaa'}
                               ],
                      'EntityA':[
                               {'name' : 'Alice'}
                               ]]}";

.NET Classes基类:

public interface EntitysInterface{}

public class EntityA: EntitysInterface
{
   public string name { get; set; }
}

public class EntityB: EntitysInterface
{
   public string title { get; set; }
}

public class Entitys
{
    public List<EntitysInterface> elements { get; set; } //EntityA, EntityB,...

    public Entitys() 
    {
    }
}

我的DeserializeObject Dificult:

Entitys listFinaly = JsonConvert.DeserializeObject<Entitys>(json); 

异常“Type是接口或抽象类,无法实例化。:(”

1 个答案:

答案 0 :(得分:2)

JSON.NET反序列化器告诉您它无法找出您想要选择的EntitysInterface对象。它要求你给它一个提示。

ContractResolver有助于提供该提示。

This post answers a similar question.

编辑:

JSON.Net文档中有good example