12
votes

Pourquoi JSON.ENCODECODECODECODE CODE Data est-il renvoyé de JSON.Decode correctement?

Lorsque vous utilisez la classe JSON à partir de System.Web.HelPers et j'exécute le code suivant, je m'attendais à produire une chaîne JSON contenant les mêmes informations que la chaîne d'origine, mais elle ne renvoie étrangement que la chaîne {" Employés ": {}} CODE> et omet le tableau entièrement et le remplace par un objet vide?

string jsonData = "[ { \"firstName\":\"John\" , \"lastName\":\"Doe\" }, { \"firstName\":\"Anna\" , \"lastName\":\"Smith\" }, { \"firstName\":\"Peter\" , \"lastName\":\"Jones\" } ]";
var json = Json.Decode(jsonData);
string result = Json.Encode(json);
/* result is (formatted for readability):
[
    { 
        "firstName" : "John",
        "lastName" : "Doe"
    },
    {
        "firstName" : "Anna",
        "lastName" : "Smith" 
    },
    {
        "firstName" : "Peter",
        "lastName" : "Jones"
    }
]
*/


1 commentaires

Je ne suis pas un expert dans cette bibliothèque, mais tout a l'air propre, alors je voterais comme un bug. Mais la manipulation de la matrice est une fonctionnalité de base à Json que je ne peux pas croire qu'ils ne le remarqueraient pas.


3 Réponses :


0
votes

Je pense que vous devriez plutôt utiliser json.net à la place. Voir: json.net sur CodePlex


1 commentaires

Cela ne répond pas à cette question, il s'agit d'un problème spécifique dans une bibliothèque spécifique et non de la meilleure façon de coder JSON.



0
votes

Avez-vous pensé à créer et à utiliser des classes, que vous pouvez ensuite sérialiser / les désérialiser? XXX

I Serialize / désérialisez presque toujours, car j'ai besoin des données comme objet à utiliser pendant exécution. Mais je suppose que cela dépend de votre cas.


0 commentaires

6
votes

Je ressens également ce bogue, heureusement, la bibliothèque est maintenant open source afin que nous puissions réparer le bogue nous-mêmes: https://aspnetwebstack.codeplex.com/sourcecontrol/latest

Le correctif est dans le système .Web.helpers / dynamicjavascriptConverter.cs xxx

J'ai déposé un bogue avec le correctif suggéré sur le site de CodePlex: https://aspnetwebstack.codepleplex.com/workitem/1085


0 commentaires