Cela semble être la même question que ci-dessous, mais cette réponse n'a pas résolu le:Comment puis-je sérialiser un tableau de chaînes en JSON à l'aide de DataContractJsonSerializer?
Deserializing a Simple JSON Array
J'utilise DataContractJsonSerializer convertir XML en JSON et vice versa. Tout fonctionne avec des types de données complexes et des tableaux de types de données complexes, mais j'ai un problème pour produire un JSON pour un tableau de chaînes.
Le JSON je dois produire devrait avoir cette structure:
{
"data": {
"x_axis": {
"labels": [ "Jan", "Feb", "Mar", "Apr","May", "Jun", "Jul", Aug","Sep", Oct", "Nov", "Dec" ]
}
}
}
Les objets que je me sers sont: -
LineChartData:
[DataContract]
public class LineChartData
{
[DataMember(Name = "x_axis")]
public LineChartXAxis XAxis { get; set; }
}
LineChartXAxis:
[DataContract]
public class LineChartXAxis
{
[DataMember(Name = "labels")]
public string[] Labels { get; set; }
}
Le XML que je suis en train de convertir ressemble à ceci:
<LineChartData>
<XAxis>
<Labels>Jan</Labels>
<Labels>Feb</Labels>
<Labels>Mar</Labels>
<Labels>Apr</Labels>
<Labels>May</Labels>
<Labels>Jun</Labels>
<Labels>Jul</Labels>
<Labels>Aug</Labels>
<Labels>Sep</Labels>
<Labels>Oct</Labels>
<Labels>Nov</Labels>
<Labels>Dec</Labels>
</XAxis>
</LineChartData>
Mon code deserialising est:
var serialiser = new XmlSerializer(typeof(LineChartData));
var stringReader = new StringReader(xml);
var result = serialiser.Deserialize(stringReader);
Le JSON je reviens a toujours un tableau vide étiquettes:
{
"data": {
"x_axis": {
"labels":[]
}
}
}
Comment dois-je définir la propriété Labels dans LineChartXAxis pour sérialiser le JSON correctement?
dbc, cet attribut XmlElement était exactement ce dont j'avais besoin. Merci pour votre réponse. J'ai laissé le reste de mon code inchangé, sans les méthodes d'extension, car il fonctionne maintenant parfaitement. –
Nous avons pris la décision d'utiliser les bibliothèques .NET natives à la place de Json.NET, ce qui explique pourquoi je le fais avec DataContractSerializer, mais j'utilise Json.NET pour tester et déboguer et c'est comme ça que j'ai créé XML que j'utilise pour tester, sachant qu'il devrait produire le JSON requis. –