2016-05-01 57 views
1

我正在使用Json.NET。對於以下JSON:爲什麼JSON路徑表達式「*」不會產生任何結果(Json.NET)

var token = JToken.Parse("[\"v\"]"); 

我運行兩個表達式:

var notFound = token.SelectTokens("*"); 
var found = token.SelectTokens("[*]"); 

出於某種原因,第一個未找到任何標記,但第二個呢。我已使用this在線工具檢查了行爲,並且還證明"*"在此情況下的行爲方式與"[*]"的行爲相同。

Json.NET是.NET中最流行和最廣泛使用的框架。因此,我猜有這種行爲的一些原因...什麼?

回答

0

嘗試/*

如果JSONPath應該爲XPath建模,那麼您需要指定相對於根的某些內容 - 我將上面的代碼解釋爲「根對象下任何類型的元素 - 也就是說,會在數組中找到字符串'下'。

+0

在JSON路徑的根是'$'。因此,我期望'$。*'匹配根目錄下的所有孩子。但事實並非如此。 '$ *'也沒有。但是,'$ [*]'再次運行......:/ –

0

這不是正則表達式,而是Json路徑。 因此,嘗試從docs

$..* 

它發現甚至更多的標記 - 2,而不是一個(陣列及其元件)

+0

'$ .. *'返回* JSON結構*的所有成員。 –

相關問題