2013-01-10 137 views
0

我試圖以反序列化JSON對象到動態列表,所以我有:JSON.NET DeserializeObject從陣列通過以列表

JSON:

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

.NET類的基類:

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難治:

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

異常「類型是一個接口或抽象類,不能實例化。 :(「

+0

也許,我會試圖幫助,如果'JsonConvert'不會拋出異常,而解析你的json字符串 – I4V

回答

2

的JSON.NET解串器是告訴你,它不能找出其中你想選擇EntitysInterface對象,它需要你給它一個提示。

ContractResolver幫助,得到。提示

This post answers a similar question.

編輯:

還有就是JSON.Net文檔中的一個good example

+0

你是否認爲任何例子? – rockxl1

+0

@ rockxl1看到我的編輯,文檔中有一個很好的例子 –