Eine einfache Linq-Abfrage für JSON-Daten
Geschrieben vonOssi Galkin Vor über einer Woche aktualisiertDieses Tutorial bietet ein Beispiel für die VerwendungLinqin Frends. In diesem Tutorial wird eine einfache Linq-Abfrage für JSON-formatierte Daten verwendet. Dieses Tutorial erstellt die NewtonsoftsLernprogrammzu diesem Thema.
Linq ist die leistungsstärkste und flexibelste Methode zur Datentransformation, die in Frends und in C# allgemein verfügbar ist. Linq kann mit Objekten, JSON, XML und anderen Datensätzen verwendet werden. Linq kann in SQL-ähnlicher Form geschrieben werden.Abfrageausdrückeoder in kürzerer FormLambda-Ausdrücke. In diesem Tutorial werden Abfrageausdrücke verwendet.
In diesem Tutorial wird der folgende einfache Prozess erstellt. Ziel ist es, eine Liste mit Titeln von Blogbeiträgen zu erstellen.
Zunächst werden JSON-Daten mithilfe eines Ausdruckselements (dem kleineren Codeelement) in einer Variable namens `#var.json` gespeichert. Die JSON-Daten könnten natürlich auch aus einer realen Datenquelle stammen. Der folgende Ausdruck wird verwendet, um Daten über Blogbeiträge zu erstellen.
@"{
'Kanal': {
'Titel': 'James Newton-King',
'Link': 'http://james.newtonking.com',
'Beschreibung': 'James Newton-Kings Blog.',
'Artikel': [
{
'Titel': 'Json.NET 1.3 + Neue Lizenz + Jetzt auf CodePlex',
'Beschreibung': 'Ankündigung der Veröffentlichung von Json.NET 1.3, der MIT-Lizenz und der Quelle auf CodePlex',
'Link': 'http://james.newtonking.com/projects/json-net.aspx',
'Kategorien': [
„Json.NET“,
„CodePlex“
]
},
{
'Titel': 'LINQ to JSON Beta',
'Beschreibung': 'Ankündigung von LINQ to JSON',
'Link': 'http://james.newtonking.com/projects/json-net.aspx',
'Kategorien': [
„Json.NET“,
'LINQ'
]
}
]
}
}"
Der Ausdruck wird dann der Variablen zugewiesen#var.json
Die Aufgabe ConvertJsonStringToJToken wird dann verwendet, um die Daten in JObject zu analysieren oder zu deserialisieren, das sich in einem aus JSON erstellten dynamischen C#-Objekt befindet.
Anschließend wird ein Codeblock (das größere Codeelement) verwendet, um mithilfe von Linq eine Liste von Titeln zu erstellen. Ein Linq-Abfrageausdruck wird verwendet, um eine Liste von Titeln in derBeitragstitel
Variable. Der Linq-Ausdruck funktioniert nur mit schwer typisierten Variablen, daher müssen wir vor der #result-Referenz ein „cast to JObject“ hinzufügen. Der Grund dafür ist, dass ConvertJsonStringToJToken jedes JToken zurückgeben kann, z. B. JObject oder JArray, und daher technisch gesehen den dynamischen Typ zurückgibt, was in Linq nicht direkt funktioniert.
Der vollständige Code für diesen Schritt lautet:
{
wobei postTitles =
von p in ((JObject)#result[ConvertJsonStringToJToken].JToken)["Kanal"]["Element"]
wählen Sie (Zeichenfolge)p["Titel"];
Posttitel zurückgeben;
}
Denken Sie daran, die Daten aus dem Codeblock zurückzugeben und die zurückgegebenen Daten einer Variablen zuzuweisen, damit sie später verwendet werden können.
Schließlich gibt der Prozess eine Liste mit Titeln zurück.
Wenn der Prozess ausgeführt wird, wird vom Prozess eine Liste mit Titeln zurückgegeben.
Verwandte ArtikelErstellen einer Frends-APIEinführung in C#-Datentypen in FrendsEinführung in die Verwendung von LINQ mit JSON-ObjektenBeispiel zur Verwendung von LINQ in Code und LINQ-RessourcenEinführung in das Erstellen einer JSON-Nachricht – ein nicht ganz einfaches Beispiel