JSON.net problème avec JsonConvert.DeserializeObject
-
20-09-2019 - |
Question
Je le code suivant et JSON:
public class Labels
{
public Labels()
{}
public Label[] Label {get;set;}
}
public class Label
{
public Label()
{ }
public string Name { get; set; }
public int TorrentsInLabel { get; set; }
}
//...
Labels o = JsonConvert.DeserializeObject<Labels>(json);
//...
{"label":
[
["seq1",1]
,["seq2",2]
]}
Je voudrais ce tableau [ "seq1", "1"] désérialiser en objet Label. Qu'est-ce que je rate? Certains attributs?
Quand je cours, je me exception. Expected un JsonArrayContract pour le type 'test_JSONNET.Label', a 'Newtonsoft.Json.Serialization.JsonObjectContract'
TNX
gg
La solution
Par défaut une classe sérialise à un objet JSON où les propriétés sur les propriétés de la classe deviennent sur l'objet JSON.
{
Name: "seq",
TorrentsInLabel: 1
}
Vous essayez de sérialisation à un tableau qui est pas comment le sérialiseur Json.NET fonctionne par défaut.
Pour obtenir ce que vous voulez, vous devez créer un JsonConverter et lire et écrire le JSON pour étiquettes manuellement pour être ce que vous voulez qu'il soit (un tableau).
Autres conseils
Comment peut-JsonConvert savoir que « seq1 » correspond au nom et « 1 » correspond à la TorrentsInLabel? S'il vous plaît jeter un oeil à JsonObjectAttribute, JsonPropertyAttribute, JsonArrayAttribute