我想通过使用Json.NET和System.Linq.Dynamic将复杂的json对象匹配到用户定义的过滤器/谓词。这里是我的代码:我如何使用System.Linq.Dynamic检查JSON对象是否与谓词匹配
var json = @"{""Name"":""Jane Doe"",""Occupation"":""FBI Consultant""}";
dynamic person = JObject.Parse(json);
var people = new[] { person };
var isMatch = people.Where("[email protected]", "Jane Doe").Any();
Console.WriteLine(isMatch);
这使我对与Where
语句来行错误:
“名称”存在类型没有属性或字段“对象”
如果我改为使用匿名对象,则用此替换第二行:
var person = new { Name = "Jane Doe", Occupation = "FBI Consultant"};
是否有另一种反序列化json字符串的方法,这将允许我通过字符串谓词查询它以检查json对象是否匹配?
编辑:json-string和Where-statement是动态的,由用户提供。有很多属性,在执行代码之前我不知道它们的名字。字段的名称和值由用户提供。
这可以帮助:http://stackoverflow.com/questions/18734996/how-to-use-linq-with-dynamic-collections –
['SelectToken'](http://www.newtonsoft.com/ json/help/html/QueryJsonSelectTokenJsonPath.htm)使用通配符“*”运算符可以满足您的需求。请参阅[在JObject层次结构中按名称搜索特定的JToken](https://stackoverflow.com/a/29782523/3744182)。 – dbc