Ich habe ein JSON-Objekt (NewtonSoft.JObject). Es enthält mehrere Einträge in diesem Format:Überprüfen Sie, ob ein Schlüssel in einem NewtonSoft JObject vorhanden ist. C#
{
"id": "b65ngx59-2c67-4f5b-9705-8525d65e1b8",
"name": "TestSample",
"versions": []
},
{
"id": "8acd8343-617f-4354-9b29-87a251d2f3e7",
"name": "template 2",
"versions": [
{
"id": "556ng956-57e1-47d8-9801-9789d47th5a5",
"template_id": "8acd8343-617f-4354-9b29-87a251d2f3e7",
"active": 1,
"name": "1.0",
"subject": "<%subject%>",
"updated_at": "2015-07-24 08:32:58"
}
]
}
Hinweis: Um nur ein Beispiel.
ich einen Code geschrieben haben, so dass ich die IDs in einer Liste erhalten:
List<JToken> templateIdList = jObj.Descendants()
.Where(t => t.Type == JTokenType.Property && ((JProperty)t).Name == "id")
.Select(p => ((JProperty)p).Value)
.ToList();
Hinweis: jObj ist das JSON-Objekt
Die Ausgabeliste ist:
[0] - b65ngx59-2c67-4f5b-9705-8525d65e1b8
[1] - 8acd8343-617f-4354-9b29-87a251d2f3e7
[2] - 556ng956-57e1-47d8-9801-9789d47th5a5
Es gibt alle IDs.Now möchte ich eine Bedingung der Linq so hinzufügen, dass nur die template_ids enthält aktive mit Wert = 1 in ihnen sollte in der Liste aufgefüllt werden.
die erforderliche Ausgabe:
[0] - 8acd8343-617f-4354-9b29-87a251d2f3e7
Welche Änderungen sollte ich auf die Linq-Abfrage machen diese zu bekommen?
EDIT: Der vollständige Code ist
public bool CheckIfTemplateExists(string template)
{
bool exists = false;
//web service call to retrieve jsonTemplates
JObject jObj = JObject.Parse(jsonTemplates);
List<JToken> templateIdList = jObj.Descendants()
.Where(t => t.Type == JTokenType.Property && ((JProperty)t).Name == "id")
.Select(p => ((JProperty)p).Value)
.ToList();
if(templateIdList.IndexOf(template) != -1)
{
exists = true;
}
return exists
}
Die jsonTemplates in dem obigen Code ist eine Zeichenfolge des Formats:
{"templates":
[{"id":"b65cae59-2c67-4f5b-9705-07465d65e1b8",
"name":"TestSample","versions":[]},
{"id":"8edb8343-617f-4354-9b29-87a251d2f3e7",
"name":"Template1",
"versions":[{"id":"556bb956-57e1-47d8-9801-9388d47cc5a5",
"template_id":"8edb8343-617f-4354-9b29-87a251d2f3e7",
"active":1,
"name":"1.0","subject":"\u003c%subject%\u003e",
"updated_at":"2015-07-24 08:32:58"}]}
Hallo Danke fürs Beantworten..Ich habe deinen Code versucht aber es gibt Fehler " Zugriff auf untergeordneten Wert auf Newtonsoft.Json.Linq.JProperty nicht möglich. " – nitinvertigo
Könnten Sie bitte das ganze Code-Fragment teilen, das nicht funktioniert? Ich werde versuchen zu reparieren. –
Der Compiler gibt Fehler, wenn es die linq-Abfrage erreicht, die Sie – nitinvertigo