2014-04-01 56 views
1

我創建了一個類型列表如下:Newtonsoft JSON序列化鍵入從列表

var executingAssembly = Assembly.GetExecutingAssembly(); 
var referencedAssemblies = executingAssembly.GetReferencedAssemblies(); 
var assembly = referencedAssemblies.Single(x => x.Name.Equals("X.Y.Z")); 
var messagesAssembly = Assembly.Load(assembly); 
var types = messagesAssembly.GetTypes(); 
var selectedTypes = from t in types 
        where t.Namespace.Contains("X.Y.Z.K") 
        select t; 

,我需要一些JSON數據轉換爲這些類型之一。我如何找出哪一個是正確的?

我曾嘗試以下:

var jsonData = File.ReadAllText(filePair.FullPath); 
foreach(var type in selectedTypes) 
{ 
    var correctObject = JsonConvert.DeserializeObject(jsonData, type); 
} 

剛剛將其轉換爲第一種類型列表中的 我也試圖與模板方法

var jsonData = File.ReadAllText(filePair.FullPath); 
foreach(var type in selectedTypes) 
{ 
    var correctObject = JsonConvert.DeserializeObject<type>(jsonData); 
} 

其中「無法解析符號「 type'

是否有可能將其轉換爲selectedTypes中的正確類型?

+0

我曾經有過類似的東西,有一個Json文件,包含TextField和Switch等不同的元素。我嘗試使用[CustomCreationConverter](http://james.newtonking.com/json/help/index。 html?topic = html/DeserializeCustomCreationConverter.htm)但結束了使用[JsonConverter](http://stackoverflow.com/questions/8030538/how-to-implement-custom-jsonconverter-in-json-net-to-deserialize -a-list-of-base) –

+0

向我們展示序列化代碼。 – Brannon

回答

1

我最終使用了「.NET最快的JSOn Serializer by ServiceStack」。 它有一個完美的工作方法ServiceStack.Text.JsonSerializer.DeserializeFromString(字符串值,類型類型)。