C#解析json数组,查询是否有某个值得键。

现在JSON类似于这个格式[{"0":"a","1":"b","2":"c","3":"d"},{"0":"aa","1":"bb","2":"cc","3":"dd"}... 现在JSON类似于这个格式
[{"0": "a", "1": "b", "2": "c", "3": "d"}, {"0": "aa", "1": "bb", "2": "cc", "3": "dd"}{"0": "aa", "1": "bb"}]
想在后台检测是否有“0”=“aa”的json
展开
 我来答
仙戈雅3n
2015-03-03 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:896万
展开全部

你的json格式有点问题,应该是不完整且键名不能相同。

下面我写了个相同的程序,希望能符合你的要求,代码如下:

public class KeysInfo {

        public KeysInfo() { }

        [JsonIgnore]
        public string Test { get; set; }

        public MyKeys[] mykeys{ get; set; }
    }
 
    public class MyKeys
    {
        public string key0{ get; set; }
        public string key1 { get; set; }
        public string key2 { get; set; }
        public string key3 { get; set; }
        public string key4 { get; set; }
        public string key5 { get; set; }
        public string key6 { get; set; }
        public string key7 { get; set; }

    }

    class Program
    {
        static void Main(string[] args)
        {
            string myJson = "{\"Test\":\"2015\",\"MyKeys\":[{\"key0\":\"a\",\"key1\":\"b\",\"key2\":\"c\",\"key3\":\"d\"},{\"key4\":\"aa\",\"key5\":\"bb\",\"key6\":\"cc\",\"key7\":\"dd\"}]}";
            // 反序列化json对象
            KeysInfo des = JsonConvert.DeserializeObject<KeysInfo>(myJson);

            if (IsExist(des, "key4", "aa")) Console.WriteLine("存在.\n");
            else Console.WriteLine("不存在.\n");
            
            Console.ReadKey(true);
        }

        public static bool IsExist(KeysInfo keyInfo, string keyName, string keyValue)
        {
            for (int i = 0; i < keyInfo.mykeys.Count(); i++)
            {
                //  反射KeysInfo类的属性以及值
                foreach (System.Reflection.PropertyInfo pi in keyInfo.mykeys[i].GetType().GetProperties())
                {
                   if (pi.Name == keyName && (pi.GetValue(keyInfo.mykeys[i])!=null
                       &&pi.GetValue(keyInfo.mykeys[i]).ToString() == keyValue))
                       return true;  // 给定的键名与值存在于json对象
                }
            }
            return false; // 给定的键名与值不存在于json对象
        }
    }
追问
我这个是JSON数组。格式没有错啊
追答
你给出的数据少了一个","在第二个和第三个大括弧之间,另外你给出的数据的键名是重名的,在反序列化时是办不到的。需要改名,如我的代码所示。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式