1
指定反序列化我有句话深深的JSON结构像下面进入过线到C#应用程序:在Json.NET
[
{
"status": "ok",
"node": "vm2",
"type": "message",
"result": {
"tx.mqid": "amq.gen-+Phq5acfC9kbs7Ch/0cUUw==",
"tx.time": 1297273910,
"tx.id": 28
}
}
...
]
我在做反序列化这样的:
List<Hashtable> des = JsonConvert.DeserializeObject<List<Hashtable>>(objs);
现在,我需要从上面的结构中提取“结果”字典。
这样做的问题是,它并不总是存在。它可能会被别的东西取代,尤其是。当发生错误时。此外,结果可能会根据Json客户端调用的函数而改变。所以我真的不能说明它在静态的方式是这样的:
JsonConvert.DeserializeObject<List<Hashtable<Hashtable>>>
现在我在做反序列化在有些愚蠢的方式,像这样:
JObject nodeResult = (JObject)nodeRec["result"];
Hashtable nrh = JsonConvert.DeserializeObject<Hashtable>(nodeResult.ToString());
也就是说,我反序列化“结果”到JObject中,然后将其序列化为文本,然后将其反序列化为Hashtable。
有没有什么办法可以直接将JObject转换成Hashtable,或者将结构深深地嵌入json文本中,比如“result”到Hashtable中?上述方法有效,但我讨厌它的笨拙。