Abfragen von JSON mit JSONPath oder SelectTokens? Mit JSON.NET in C#
Ich versuche, mit der Newtonsoft.Json.Net in c#. Das folgende ist ein Teil der JSON-Datei, die ich brauche zum abrufen von Daten aus:
{
"video":{
"local_recording_device":{
"codecs":null
},
"preferred_string":"___PREFERRED___",
"streams":{
"99176901":{
"id":"99176901",
"name":"PTZ Camera",
"site":"someone",
"email":"[email protected]",
"codec":"VP8 HD1 (720p)",
"local":true,
"screen":false,
"fit_to_window":true,
"stay_on_top":false,
"layout":0,
"native_width":1280,
"native_height":720,
"window_width":456,
"window_height":254,
"preferred":false,
"local_recording":false,
"device_id":"MJPEG Camera",
"normalized_device_id":"MJPEGCamera",
"shared_window_id":"MJPEG Camera",
"enable":true,
"big_location":"2",
"x":347,
"y":737,
"window_id":"197302",
"camera_id":null
},
"3091494011":{
"id":"3091494011",
"name":"Logitech Webcam C930e",
"site":"Joe Smith",
"email":"[email protected]",
"codec":"VP8 Medium (CIF)",
"local":false,
"screen":false,
"fit_to_window":true,
"stay_on_top":false,
"layout":0,
"native_width":352,
"native_height":288,
"window_width":864,
"window_height":702,
"preferred":true,
"local_recording":false,
"enable":true,
"big_location":"1",
"x":204,
"y":0,
"window_id":"197296",
"camera_id":null
},
"3798287599":{
"id":"3798287599",
"name":"Drive Camera",
"site":"ASiteName",
"email":"[email protected]",
"codec":"VP8 HD1 (720p)",
"local":true,
"screen":false,
"fit_to_window":true,
"stay_on_top":false,
"layout":0,
"native_width":1280,
"native_height":720,
"window_width":456,
"window_height":254,
"preferred":true,
"local_recording":false,
"device_id":"Logitech Webcam C930e",
"normalized_device_id":"LogitechWebcamC930e",
"shared_window_id":"Logitech Webcam C930e",
"enable":true,
"big_location":"3",
"x":814,
"y":737,
"window_id":"262822",
"camera_id":null
}
}
}
}
So, innerhalb der JSON-Daten: "video", "streams" innen strömen kann x Anzahl der verschiedenen streams (stream-id). Die Bäche in "streams" (die lange zahlen) ändern kann jederzeit. In meinem Beispiel hier sind es drei. Ich brauche zu suchen Sie durch alle streams in "streams" und sehen, ob jeder von Ihnen hat eine "E-Mail", entspricht eine bestimmte E-Mail-Adresse. Jeder der streams hat einen "E-Mail". Wenn eine E-Mail entspricht meine angegebene E-Mail-Adresse, die ich brauche, um zu überprüfen, dass streams "aktivieren", um zu sehen, ob es wahr oder falsch ist.
Jede Hilfe ist geschätzt, führt mich in die richtige Richtung. Ich habe nicht gearbeitet mit einem JSON-Daten vor.
InformationsquelleAutor stopmotion24 | 2015-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie LINQ to JSON und
SelectTokens
zu tun, die erforderliche Abfrage:Die Abfrage gibt ein nullable
bool
, isttrue
oderfalse
wenn der erste stream für die gewünschte E-Mail-aktiviert ist, odernull
wenn es keinen Strom für das E-Mail-Adresse.Beachten Sie, dass dieser liefert die
enabled
Zustand der ersten stream Abgleich der angegebenen E-Mail-Adresse. Wenn Sie wissen möchten, ob alle aktiviert sind, tun:InformationsquelleAutor dbc