我试图通过以下操作来反序列化json文本/字符串:
var jObject = JsonConvert.DeserializeObject<JObject>(myjsonstring);
问题是,我稍后需要遍历jObject。。因为我稍后将使用特殊格式将其"序列化"回XML。但这种反序列化为json中的每个"节点"提供了一个JProperty和一个JObject。。有没有办法告诉序列化程序Im只关心JProperty或JObjects。
===============
编辑
再解释一下。。问题是,如果我稍后在VS手表中键入以下内容:
jObject
它会给出这样的结果:
{ "myjson":{ "mytest":"myvalue" } }
和
jObject.Children().First()
会给我手表的以下结果/响应:
{"myjson":{ "mytest":"myvalue" } }
但我认为更合乎逻辑的结果/回应是:
{ "mytest":"myvalue" }
由于这是"myjson"-属性的实际Child对象。。所以问题是…我如何才能得到我真正想要的行为?还是我错过了什么?
要访问JObject内部的值,我使用JToken:
JToken child = jObject["myjson"];
如果你想检索字符串中的值,你可以序列化JToken
string childInString = JsonConvert.SerializeObject(child);
希望有帮助。