Pouvez-vous désérialiser une chaîne JSON C# array?
Je suis en train de désérialiser la chaîne JSON
[{ "key" : "1", "value" : "open"}, {"key" : "2", "value" : "closed"}, {"key" : "3", "value" : "pending"}]
en C# array. J'obtiens le message d'erreur "Pas de constructeur sans paramètre défini pour le type de Système.Tableau"." Je suis en tirant la JSON à partir d'une base de données, puis j'ai voulu le désérialiser afin que je puisse accéder aux valeurs et à la mise à jour d'un autre champ dans ma base de données avec tout ce que l'utilisateur passé en. C'est juste un exemple que je vais essayer de bien et j'en ai besoin pour être dynamique, pas statique, car la chaîne JSON contenues dans la base de données peut être variable.
J'ai essayé à l'aide d'un dictionnaire plus tôt, mais n'avait pas de chance avec ça. Donc, je suis en train d'essayer une approche différente maintenant par la désérialisation d'un tableau alors que j'allais remplir le dictionnaire de la matrice.
C'est la méthode que je suis en train de mettre en œuvre, pour le moment...même si j'ai essayé plusieurs autres...
IList<Array> ValueArray = new JavaScriptSerializer().Deserialize<IList<Array>>(this.Parameter.ValueList);
//this.Parameter.ValueList just contains my JSON string
Je pense que je ne peux pas le faire sans la création de ma propre classe?
Quand j'ai essayé à l'aide d'un dictionnaire, j'ai essayé ce
Dictionary<string, string> ValueList =
JsonConvert.DeserializeObject<Dictionary<string, string>>(this.Parameter.ValueList);
mais a reçu cette erreur
"Ne peut pas désérialiser l'actuel tableau JSON (par exemple, [1,2,3]) dans le type
'Système.Les Collections.Génériques.Dictionnaire`2[Système.Chaîne,Système.Chaîne de]'
parce que le type requiert un objet JSON (par exemple, {"name":"valeur"})
désérialiser correctement. Pour corriger cette erreur soit modifier le JSON pour un
Objet JSON (par exemple, {"name":"valeur"}) ou de modifier le désérialisé type de
un tableau ou un type qui implémente une interface de collecte (p. ex.
ICollection, IList) comme Liste qui peut être désérialisé à partir d'un JSON
tableau. JsonArrayAttribute peuvent également être ajoutés à la type pour le forcer à
désérialiser à partir d'un tableau JSON. Chemin d'accès ", line 1, position 1."
J'ai donc commencé à essayer d'utiliser un tableau à la place.
En regardant votre JSON, je pense que vous voulez pour désérialiser dans une Liste<Dictionnaire<string, string>> - le dictionnaire ne avoir un constructeur sans paramètre de sorte que vous devriez être en mesure de l'utiliser.
C'est le post j'ai lu lors de la première tentative de ce problème et j'ai essayé le dictionnaire en premier. Je n'ai toujours pas de travail et a suivi l'exemple...Le message d'erreur que j'ai suggéré d'essayer un tableau c'est pour ça que j'ai commencé dans cette voie.
Modifier votre question au lieu de poster des commentaires. Et vous essayez de désérialiser dans le Tableau de Dictionnaires.
OriginalL'auteur | 2012-07-25
Vous devez vous connecter pour publier un commentaire.
ou simplement l'utiliser
KeyValue
temporairementSi vous êtes ouvert à l'utilisation Json.Net , vous pouvez directement convertir Dictionnaire
OriginalL'auteur L.B
Essayer
Mais je ne suis pas sûr si c'est pris en charge par la bibliothèque.
OriginalL'auteur Euphoric
Je viens de pensé à elle. Il y a une syntaxe spécifique, vous devez utiliser un dictionnaire. La première chose que j'ai vérifié lors de la première essayer de remédier à ce problème était de ma chaîne JSON (j'ai utilisé JSONLint.com), et il est bien valide, qui est ce qui m'a jeté le parfum du bug...
Mais j'ai juste fait un peu plus d'essais avec elle en prenant un dictionnaire et la sérialisation, pour voir ce que le JSON ressemblait...Alors que la syntaxe de mon JSON doit être pour la conversion d'un dictionnaire est-ce
{"1":"En Attente","2":"Ouvrir","3":"Fermé"}
OriginalL'auteur