如何通过给定的Jtoken键搜索json数据,这个Jtoken可以在json数据中无处不在。我发现下面的代码并且它有效,但由于json对我来说是新的,只想知道是否有更好的解决方案
//resources is some json data
JToken node = JToken.Parse(resources);
var ids = new List<string>();
WalkNode(node, n =>
{
JToken token = n["OrderId"];
if (token != null && token.Type == JTokenType.String)
mediaLinkHrefs.Add(token.Value<string>());
});
private static void WalkNode(JToken node, Action<JObject> action)
{
if (node.Type == JTokenType.Object)
{
action((JObject)node);
foreach (JProperty child in node.Children<JProperty>())
{
WalkNode(child.Value, action);
}
}
else if (node.Type == JTokenType.Array)
{
foreach (JToken child in node.Children())
{
WalkNode(child, action);
}
}
}
答案 0 :(得分:2)
选择更快的方式:
转到http://json2csharp.com/粘贴你的json,它将创建一个从你的json派生的自定义类/ es。
使用syster.web.script.serialization
中的javascriptserializer拨打电话假设您将json响应放入S字符串广告中,您的类名为RootObject
string S = JSON;
javascriptserializer js = new javascriptserializer();
RootObject o = js.deserialize<RootObject>(S);
dim S a string=JSON 'your json string
dim jsas new javascriptserializer
dim o as RootObject=js.deserialize(of RootObject)(s)
然后你可以简单地使用linq,而这就是全部。
3行代码:D
希望能帮助你。