ein Problem Nachdem ein JSON-String immer in eine C# Datentabelle zu konvertieren ...Ausgabe Umwandlung JSON-String zu Datatable C#
Hier ist ein Beispiel für die JSON-String, der Code aus einer API
mir zurückgegeben wird{
"Code": 0,
"Result": [
{
"ID": 1,
"Reference": "101",
"Asset": 200,
"Event": 1,
"DateEventStart": "2/10/2017 9:08:33 PM",
"DateEvent": "2/11/2017 1:00:14 AM"
}
]
}
das kommt also in der API und ich lese es, dann versuchen, eine Datentabelle wie diese
var response = (HttpWebResponse)httpWebRequest.GetResponse();
var encoding = Encoding.GetEncoding(response.CharacterSet);
var responseStream = response.GetResponseStream();
var reader = new StreamReader(responseStream, encoding);
responsetext = reader.ReadToEnd();
var table = JsonConvert.DeserializeObject<DataTable>(responsetext);
erstellen jedoch dies der folgende Fehler gibt:
Unexpected JSON token when reading DataTable. Expected StartArray, got StartObject. Path '', line 1, position 1
Ich bin neu im Umgang mit JSON in C# so jede Hilfe geschätzt. Ich denke, dass meine Zeichenkette in irgendeiner Weise ungültig ist, um es zu analysieren, aber ich weiß es nicht. Wenn es mehr Informationen erforderlich ist, lassen Sie es mich wissen
EDIT: Ok, ich folgte dem Link, Xingxing Qiao Put - macht Sinn. Ich bekomme jetzt einen anderen Fehler, die ich denke, ist wegen dem, was ich in die Klasse gesteckt haben, dass die JSON deserialised in wird -
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[WindowsFormsApplication7.TrackingResponse]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Code', line 1, position 8.
Hier ist die Klasse ... ist es, weil ich nicht enthalten ' Code‘und‚Ergebnis‘aus dem JSON
public class TrackingResponse
{
public string ID { get; set; }
public string Reference { get; set; }
public string Asset { get; set; }
public string Event { get; set; }
public string DateEventStart { get; set; }
public string DateEvent { get; set; }
}
überprüfen Sie dies, [convert-json-zu-Datentabelle] (http://stackoverflow.com/questions/11981282/convert-json-to-datatable) –
Sieht aus wie ein Duplikat von [Deserialize ein verschachteltes DataSet von Json String mit Json.NET] (https://stackoverflow.com/a/42090584/3744182). Wie in dieser Antwort benötigen Sie ein Wrapper-Root-Objekt, das Ihre 'DataTable' enthält. Beantwortet das Ihre Frage ausreichend oder benötigen Sie das spezifische Root-Objekt? – dbc
Danke @XingxingQiao, siehe meine weiteren Kommentare oben – reviloSlater