Newtonsoft JSON反序列化以从列表中键入

时间:2014-04-01 12:24:09

标签: c# json reflection json.net

我创建了一个类似的列表:

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);
}

哪个&#34;无法解析符号&#39;键入&#39;。

是否可以将其转换为selectedTypes中的正确类型?

1 个答案:

答案 0 :(得分:1)

我最终使用“ServiceStack的.NET最快的JSOn Serializer”。 它有一个方法ServiceStack.Text.JsonSerializer.DeserializeFromString(字符串值,类型类型),它完美地工作。