Hallo,
möchte ein Json Array ordentlich deserialisieren. Zum deserialisieren habe ich für den JsonDeserializer extra Klassen angelegt, die dem Schema des Json Strings entsprechen (jedenfalls denke/hoffe ich das).
Was jetzt nicht Thema sein soll ist die Klassenverkapselung, die für Unwissende wahrscheinlich komisch aussieht. Da ich aber eine Lib schreiben möchte um eine API anzusteuern, habe ich absichtlich
ein solches Format gewählt. Aber wie gesagt, das soll nicht das Thema sein.
Das Schema sollte klar sein. 4 Eigenschaften in der
Zu deserialisieren ist dieser String:
Ich bekomme allerdings einen Laufzeitfehler beim Deserialisieren.
Fehler:
Spoiler anzeigen
Das
Ich bin relativ neu was Json angeht. Nicht vergessen
MfG Tim
möchte ein Json Array ordentlich deserialisieren. Zum deserialisieren habe ich für den JsonDeserializer extra Klassen angelegt, die dem Schema des Json Strings entsprechen (jedenfalls denke/hoffe ich das).
C#-Quellcode
-
- public class List {
- public const string RequestMethod = "GET";
- public const string RequestPath = "api/v1/bot/instances";
- public class Success {
- public class Instance {
- [JsonProperty("uuid")]
- public string Uuid { get; set; }
- [JsonProperty("nick")]
- public string Nick { get; set; }
- [JsonProperty("running")]
- public bool IsRunning { get; set; }
- [JsonProperty("mainInstance")]
- public bool IsMainInstance { get; set; }
- } //Instances
- [JsonProperty("instances")]
- public List<Instance> Instances { get; set; }
- } //Success
- } //List
Was jetzt nicht Thema sein soll ist die Klassenverkapselung, die für Unwissende wahrscheinlich komisch aussieht. Da ich aber eine Lib schreiben möchte um eine API anzusteuern, habe ich absichtlich
ein solches Format gewählt. Aber wie gesagt, das soll nicht das Thema sein.
Das Schema sollte klar sein. 4 Eigenschaften in der
Instance
-Klasse und Success
umgibt eine Instances
-Eigenschaft welche das Array darstellen soll.Zu deserialisieren ist dieser String:
Ich bekomme allerdings einen Laufzeitfehler beim Deserialisieren.
Fehler:
An der Stelle:
Ein Ausnahmefehler des Typs "Newtonsoft.Json.JsonSerializationException" ist in Newtonsoft.Json.dll aufgetreten.
Zusätzliche Informationen: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'Sinusbot.JsonClasses.Instances.List+Success' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
Path '', line 1, position 1.
An der Stelle:
Das
List<Instance>
soll laut Json.Net ja kein Problem sein. Ich denke aber, dass durch meine Kapselung versucht wird das Array auf List.Success
zu deserialisieren und nicht auf die List<Instance> Instances
.Ich bin relativ neu was Json angeht. Nicht vergessen
MfG Tim