我有问题怎么做。
我有JSON字符串,希望将其更改为类。
我知道我可以使用这段代码:
var json = JsonConvert.DeserializeObject<MyClass>(stringJson);
问题是我有一些课程,并且不知道如何很好地选择应该使用哪个课程。
我知道一种方法,但我认为这是令人讨厌的。 E.g:
try
{
var json = JsonConvert.DeserializeObject<MyClass1>(stringJson);
}
catch()
{}
try
{
var json = JsonConvert.DeserializeObject<MyClass2>(stringJson);
}
catch()
{}
还有其他原因吗?
编辑:
我有8-10个不同版本的版本,在所有版本中我都知道它的外观(版本号可以更改)。
答案 0 :(得分:0)
正如我评论的那样,在这种情况下你应该使用object
:
var json = JsonConvert.DeserializeObject<JObject>(stringJson);
在你的JObject中你应该发送你的课程和switch
,就像这样:
string type = json["type"].ToString();
switch(type)
{
case "MyClass":
//do whatever...
break;
case "MyClass1":
//do whatever...
break;
case "MyClass2":
//do whatever...
break;
}
我写了一个错误,是的,我错过了this(你可以使用ToObject方法):
var json = JsonConvert.DeserializeObject<JObject>(stringJson);
string type = json.ToObject<object>().GetType().Name;
在方法1
中执行switch
此外,您可以base class
:
public class MyClass
{
}
public class MyClass1 : MyClass
{
}
public class MyClass2 : MyClass
{
}
//And so on...
如果这不是您所需要的,请告诉我。
答案 1 :(得分:0)
您可以解析为index.php
,根据您自己的规则选择确切的类型。你甚至可以使用LINQ和其他奇特的东西。
例如,让我们采取类似的消息结构:
if($_SERVER['REQUEST_URI'] == "/"){
include('......server file directory to file you want to redirect to');
exit;
}
然后你拥有它:
JObject
如果你无法控制json格式,你可以使用任何证据来确定确切的类型