Ich versuche, meine Web-API, die JSON-Format von meiner asp.net mvc Web-Anwendung zurückgibt zu konsumieren. Wie mein JSON-Format hat Root-Knoten (die Art, wie ich mit OLEDB-Datensatz gefüllt). Ich bekomme immer den folgenden Fehler.Consuming asp.net web.api json funktioniert nicht
kann die aktuelle JSON Objekt nicht Deserialisieren (zB { "name": "value"}) in Typ 'System.Collections.Generic.List'1 [Fileattributes]', weil der Art mit einer JSON Array erfordert (zB [1,2,3]) um korrekt zu deserialisieren. Um diesen Fehler zu beheben, ändern Sie entweder das JSON in ein JSON-Array (zB [1,2,3]) oder ändern Sie den deserialisierten Typ, so dass es ein normaler .NET-Typ ist (zB kein primitiver Typ wie ganze Zahlen, keine Sammlung) Typ wie ein Array oder
List<T>
), das aus einem JSON Objekt deserialisiert werden kann. JsonObjectAttribute kann auch zu dem Typ hinzugefügt werden, um es zu erzwingen, von einem JSON-Objekt zu deserialisieren. Pfad ‚search‘, Zeile 1, Position 14.
Hier ist der Codebeispiel
string Baseurl = "http://localhost:62602/";
client.BaseAddress = new Uri(Baseurl);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage Res = await client.GetAsync("api/FileSearch/?searchTerm=" + searchTerm);
if (Res.IsSuccessStatusCode)
{
var fsResponse = Res.Content.ReadAsStringAsync().Result;
List<FileAttributes> fileAttribultes = JsonConvert.DeserializeObject<List<FileAttributes>>(fsResponse);
}
Und dann folgt ein paar Ideen, habe ich JSON.Parse
und SelectToken
Wurzelknoten zu entfernen, aber dieses Mal die List<FileAttributes>
gibt Daten aber mit Nullwerten
JToken jtok = JObject.Parse(fsResponse).SelectToken("SearchData");
List<FileAttributes> fileAttribultes = JsonConvert.DeserializeObject<List<FileAttributes>>(fsResponse);
Hier ist meine Fileattributes Klasse
public class FileAttributes
{
public string Name { get; set; }
public string Header { get; set; }
public string Title { get; set; }
}
Ich schätze es, wenn jemand überprüft, was falsch ist in der Deserialisierung von JSON-Teil mit Root-Knoten und was ist der richtige Weg, es zu tun?
von POSTMAN Ausgang
Kopierte{ "SearchData": [ { "SYSTEM.NAME": "FILE NAME 1" , "SYSTEM.HEADER": "HEADER 1", "SYSTEM.TITLE": "TITLE 1", }, { "SYSTEM.NAME": "FILE NAME 1" , "SYSTEM.HEADER": "HEADER 1", "SYSTEM.TITLE": "TITLE 1", }, { "SYSTEM.NAME": "FILE NAME 1" , "SYSTEM.HEADER": "HEADER 1", "SYSTEM.TITLE": "TITLE 1", }] }
Was bedeutet die JSON aussehen? Die Fehlermeldung zeigt Ihnen, was Sie tun müssen, um das Problem zu lösen. – Nkosi
Hoppla Sorry, habe vergessen, JSON-Beispiel zu erwähnen. Kopiert von POSTMAN Ausgang '{ "search": [{ "SYSTEM.NAME": "FILE NAME 1" "SYSTEM.HEADER": "HEADER 1" "System.Title":„TITLE 1" }, { \t \t "SYSTEM.NAME": "FILE NAME 1" "SYSTEM.HEADER": "HEADER 1" "System.Title": "TITLE 1", }, \t \t { "SYSTEM.NAME": "DATEINAME 1", "SYSTEM.HEADER ":" HEADER 1 ", " SYSTEM.TITEL ":" TITEL 1 ", }] }' – user2178604