【发布时间】:2016-02-03 16:49:32
【问题描述】:
拥有这样的 json 字符串(我无法控制发布者):
{
"TypeName": "Type1"
}
{
"TypeName": "Type1"
}
这是动态反序列化 json 字符串的可接受方式吗?:
public class DeserializationFactory
{
public static IPoco GetEvent(string jsonString)
{
var o = JObject.Parse(jsonString);
IPoco poco = null;
switch (o["TypeName"].ToString())
{
case "Type1":
poco = JsonConvert.DeserializeObject<Type1>(jsonString);
break;
case "Type2":
poco = JsonConvert.DeserializeObject<Type2>(jsonString);
break;
}
return poco;
}
}
【问题讨论】:
-
你是说你不确定应该反序列化到哪个 Poco?
-
并非如此。这取决于“TypeName”的值
-
您可能希望使用
JsonConverter来完成此操作,以防您的IPoco包含在某个更高级别的对象中。见stackoverflow.com/questions/19307752/… 或stackoverflow.com/questions/29528648/…