妳的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對象
}
}