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 展开
[{"0": "a", "1": "b", "2": "c", "3": "d"}, {"0": "aa", "1": "bb", "2": "cc", "3": "dd"}{"0": "aa", "1": "bb"}]
想在后台检测是否有“0”=“aa”的json 展开
1个回答
展开全部
你的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数组。格式没有错啊
追答
你给出的数据少了一个","在第二个和第三个大括弧之间,另外你给出的数据的键名是重名的,在反序列化时是办不到的。需要改名,如我的代码所示。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询