Erste Ausnahme beim Zugriff auf den Wert JToken - Nicht Zugriff auf die untergeordneten Wert auf Newtonsoft.Json.Linq -.JValue
Arbeite ich an einem test-Fall zu emulieren meine C# - Methode. Ich bin nicht in der Lage, um den Zugriff auf die Eigenschaft "DocumentID" der JToken mit token["DocumentID"]. Ich bin langsam am System.InvalidOperationException - "kein Zugriff auf Kind Wert auf Newtonsoft.Json.Linq -.JValue".
string response = "[\r\n \"{ \\\"DocumentID\\\": \\\"fakeGuid1\\\",\\\"documentNotes\\\": \\\"TestNotes1\\\"}\"\r\n]";
//Response has escape charaters as this is being returned by a mockMethod which is supposed to return JSon.ToString().
string[] fakeGuidForExecutiveSummary = new string[]{"fakeGuid1"};
string fakeResponseFromExecutiveSummaryProxy = "{ \"DocumentID\": \"fakeGuid1\",\"documentNotes\": \"TestNotes1\"}";
JArray jsonResponse = JArray.Parse(response);
//Value of jsonResponse from Debugger - {[ "{ \"DocumentID\": "fakeGuid1\",\"documentNotes\": \"TestNotes1\"}" ]}
JToken token = jsonResponse[0];
//Value of token from Debugger - { "DocumentID": fakeGuid1","documentNotes": "TestNotes1"}
Assert.AreEqual(fakeGuidForExecutiveSummary[0], token["DocumentID"]);
Was ist
Auch, was ist
Bitte versuchen Sie, erstellen eine Minimale, Vollständige und Überprüfbare Beispiel der code, der veranschaulicht, dein problem. Da du einige Schritte weglassen (wie beim initialisieren
Ich habe gerade Bearbeitete meine Frage. Danke.
fakeGuidForExecutiveSummary gleich die Antwort.
response
? Auch, verwenden Sie nicht fakeResponseFromExecutiveSummaryProxy
überhaupt, so was JSON sind Sie eigentlich mit?Auch, was ist
fakeGuidForExecutiveSummary
?Bitte versuchen Sie, erstellen eine Minimale, Vollständige und Überprüfbare Beispiel der code, der veranschaulicht, dein problem. Da du einige Schritte weglassen (wie beim initialisieren
fakeGuidForExecutiveSummary
) wir können nur erahnen, was das problem ist.Ich habe gerade Bearbeitete meine Frage. Danke.
fakeGuidForExecutiveSummary gleich die Antwort.
InformationsquelleAutor Santosh K | 2015-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen nicht zeigen, wie Sie initialisieren
fakeGuidForExecutiveSummary
. Vorausgesetzt, Sie tun es in der folgenden Weise:Dann das problem ist, dass
fakeGuidForExecutiveSummary
ist einJValue
, nicht einJToken
oderJArray
. Ihr code wird werfen der Ausnahme, die Sie sehen, wenn Sie versuchen, Zugriff auf einen (nicht vorhandenen) Kindes Wert von index.Stattdessen müssen Sie Folgendes tun:
Update
Angesichts Ihrer aktualisierten code, das problem ist, dass dein Beispiel-JSON -
response
hat zu viele Ebenen von string-escaping:\\\"DocumentID\\\"
. Sie wahrscheinlich kopiert escaped strings angezeigt, die in Visual Studio in den Quellcode, dann entkam Sie einigen wieder.Ändern
Antwort aktualisiert.
Hinzufügen eine zusätzliche Zeile Ihre obigen code gearbeitet JToken token = JToken.Parse(jsonResponse[0].ToString());
InformationsquelleAutor dbc