我有一个带有一些数据的JSON对象,我想获得每次出现的特定键名的所有值.是否有任何预定义的方法在JSON对象中搜索所有出现的键或需要编写用户定义的方法?
示例Json
[{"id":"23","name":"sunny","className":"2","class" :{"className":"1","class2" :{"className":"3","class" :{"className":"4"}}}}]
Run Code Online (Sandbox Code Playgroud)
这可以通过使用SelectTokens具有递归路径的方法使用LINQ to JSON来实现..className
class Program
{
static void Main(string[] args)
{
JObject jObject = JObject.Parse(jsonString);
// You would use this because you have an array.
// JArray jObject = JArray.Parse(jsonArray);
// .. - recursive descent
var classNameTokens = jObject.SelectTokens("..className");
var values = classNameTokens.Select(x => (x as JValue).Value);
}
static string jsonString = @"{'id':'23','name':'sunny','className':'2','class' :{'className':'1','class2' :{'className':'3','class' :{'className':'4'}}}}";
static string jsonArray = @"[{'id':'23','name':'sunny','className':'2','class' :{'className':'1','class2' :{'className':'3','class' :{'className':'4'}}}}]";
}
Run Code Online (Sandbox Code Playgroud)
参考文献:
Json.NET 6.0第1版 - JSONPath和F#支持