2016-05-01 1 views
1

Ich verwende Json.NET. Für die folgende JSON:Warum ein JSON-Pfadausdruck "*" keine Ergebnisse liefert (Json.NET)

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

Ich betreibe zwei Ausdrücke:

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

Aus irgendeinem Grund die erste keine Token findet, aber der zweite Fall ist. Ich habe das Verhalten mit this Online-Tool überprüft und es beweist auch, dass "*" in diesem Fall genauso wie "[*]" verhalten sollte.

Json.NET ist eine der beliebtesten und am häufigsten verwendeten Framework in .NET. Also denke ich, ist ein Grund für ein solches Verhalten ... was?

Antwort

0

Versuchen Sie /*?

Wenn JSONPath XPath modellieren soll, dann müssen Sie etwas relativ zu einem root angeben - ich würde den obigen Code als ein Element eines beliebigen Typs unter dem Stammobjekt interpretieren - also es würde die Zeichenfolgen unter dem Array finden.

+0

Die Wurzel in JSON Pfad ist '$'. Daher würde ich erwarten, dass '$. *' Alle untergeordneten Elemente unter der Wurzel abgleicht. Aber das tut es nicht. Auch nicht "$ *". '$ [*]' Funktioniert aber wieder ...:/ –

0

Es ist kein regulärer Ausdruck, aber Json Pfad. So versuchen, dass aus docs

$..* 

Es findet noch mehr Token - 2 statt einer (Array und sein Element)

+0

'$ .. *' gibt * alle Mitglieder der JSON-Struktur * zurück. –