2009-05-23 13 views
3

J'ai une question concernant la bibliothèque JSON.Net. Normalement, j'ai une chaîne XML comme ceci:Propriété Json.net: valeur unique ou tableau de valeurs

<Config> 
    .... 
    <Name>some name</Name> 
    .... 
</Config> 

Puis-je utiliser la bibliothèque JSON.Net pour transformer la chaîne en une chaîne JSON comme ceci:

Congif: { 
    ... 
    Name: "some name", 
    ... 
} 

Enfin je mapper cette chaîne JSON à une instance de classe Config:

Config instance = JsonConvert.DeserializeObject<Config>(json); 

Si la propriété de nom est un tableau de noms dans ma classe Config:

class Config { 
    .... 
    public string[] Name { get; set; } 
    .... 
} 

Je comprends que dans la chaîne JSON un tableau est défini comme ceci:

Name: ["some name"], 

Depuis que je reçois une chaîne JSON convertie à partir d'une chaîne de XMl, je peux avoir un ou plusieurs noeuds de nom. Cela me cause des problèmes quand un seul nom est défini dans le XMl. J'obtiendrai une exception me plaignant qu'il ne peut pas convertir la chaîne en chaîne []. Ce sera OK si plusieurs noeuds Name sont définis dans le fichier XML. Vous ne savez pas s'il existe un moyen ou une option de laisser la bibliothèque JSON la convertir en un tableau de chaînes automatiquement lorsque le mappage voit la propriété cible Name est une propriété de type tableau même s'il n'y a qu'une seule valeur de Name?

+0

Je suis aux prises avec le même problème. :-( –

Répondre

1

Je pense que je dois accepter la manière JSON.Net. Si un jsonString contient une valeur de chaîne pour une clé, il doit alors convertir la valeur en une valeur de chaîne au lieu du tableau de chaînes, même si la propriété de mappage est un type de tableau. Ce que je peux faire est d'ajouter un nœud de valeur vide à une chaîne XML pour le rendre comme un tableau de nœuds s'il n'y a qu'un seul nœud dans la chaîne XML, ou ajouter un nœud de valeur vide à tous les nœuds existants indépendamment.

Le seul problème est qu'une entrée vide est ajoutée au tableau.