发现在C#中从JSON字符串所有出现的价值 [英] Find a value of all occurrences from the json string in c#

查看:148
本文介绍了发现在C#中从JSON字符串所有出现的价值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些数据的JSON对象,我希望得到特定的键名的每次出现的所有值。是否有来搜索所有出现在JSON对象的关键还是需要编写用户定义的方法任何预定义的方法?



样的Json

  [{ID:23,名:阳光灿烂,类名:2,一流:{类名: 1,类别2:{类名:3,一流:{类名:4}}}}] 


解决方案

这可以和LINQ使用 SelectTokens 方法,实现以JSON一个递归路径 ..的className

 类节目
{
静态无效的主要(字串[] args)
{
jObject jObject = JObject.Parse(jsonString);

//因为你有一个数组你会使用这个。
// JArray jObject = JArray.Parse(JSONArray),其中,

// .. - 递归下降
VAR classNameTokens = jObject.SelectTokens(..的className);
VAR值= classNameTokens.Select(X =>(x作为JValue).value的);
}

静态字符串jsonString = @{ID:'23','名':'阳光灿烂','类名':'2','类':{'的className':'1','类别2':{'的className':'3','类':{'的className':'4'}}}};
静态字符串jsonArray = @[{ID:'23','名':'阳光灿烂','类名':'2','类':{'的className':'1','类别2':{'的className':'3','类':{'的className':'4'}}}}];
}



参考文献:



Json.NET - 文档 - 解析JSON



Json.NET 6.0发行1 - JSONPath和F#支持



JSONPath表达


I have a JSON object with some data and I want to get all the values of each occurrence of specific key name. Is there any predefined method to search for a key in JSON object for all occurrences or need to write user defined method?

Sample Json

[{"id":"23","name":"sunny","className":"2","class" :{"className":"1","class2" :{"className":"3","class" :{"className":"4"}}}}]

解决方案

This can be achieved with LINQ to JSON by using the SelectTokens method with a recursive path ..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'}}}}]";
}

References:

Json.NET - Documentation - Parsing JSON

Json.NET 6.0 Release 1 - JSONPath and F# Support

JSONPath expressions

这篇关于发现在C#中从JSON字符串所有出现的价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆