2014-04-01 54 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(字符串值,类型类型)。