2015-09-16 25 views
2

我使用Newtonsoft Json.Net的SelectTokens()。 我試圖從對象列表中選擇值,其中每個對象都有一個自然鍵和一個值。如何使用JPath選擇具有指定值的子項的收集項目?

jobAsJObject.SelectTokens("$.SeparatedContexts[.ContextName='default']") 

我無法弄清楚,因爲我發現的例子都沒有涵蓋基於子屬性選擇項目。

+0

或者,您可以推薦一些simmilar庫來選擇動態對象或JSON字符串中的元素嗎? – doker

回答

2

有關JSONPath查詢的文檔可以在Querying JSON with JSONPathJSONPath - XPath for JSON找到。除此之外,您可以爲具有特定屬性值的孩子過濾數組。語法是:

[?(@.PropertyName='PropertyValue')] 

因此,爲了在名爲'SeparatedContexts'陣列選擇與地產'ContextName' : 'default'所有元素,這樣做:

var tokens = jobAsJObject.SelectTokens("SeparatedContexts[?(@.ContextName == 'default')]"); 

當然,你總是可以只添加一個LINQ Where子句代替:

var token = jobAsJObject.SelectTokens("SeparatedContexts[*]") 
         .Where(o => (string)o.SelectToken("ContextName") == "default"); 

工作fiddle

+0

「?」 char ...我看到...非常感謝。 – doker

相關問題