4 votes

MVC4 : inclure le nom de l'objet dans Json

J'ai une question sur un problème de MVC4 (bêta) avec lequel je me bats depuis un certain temps maintenant. Le problème est que je veux créer un json avec le nom de l'objet ajouté pour mon webapi. Le json doit être créé de cette manière car le côté récepteur en a besoin. Mes connaissances de .NET/MVC sont limitées, alors soyez indulgent avec moi. J'ai essayé de faire des recherches sur le sujet, mais comme MVC4 est encore en version bêta, il est difficile de trouver de bonnes informations sur ce sujet.

J'ai déjà importé le formateur JSON.NET dans ma solution, mais il n'ajoute pas le nom de l'objet.

Le json qui est maintenant créé dans MVC4 :

[{"ID":36,"Name":"Test3","Description":"Description Test3"},{"ID": 37,"Name": "Test4","Description": "Description Test4"}]

Et je voudrais que le json ressemble à ça :

{"Goal":[{"ID":36,"Name":"Test3","Description":"Description Test3"},{"ID": 37,"Name": "Test4","Description": "Description Test4"}]}

J'aimerais donc que le nom de l'objet (Goal) soit inclus dans le json.

Le code dans mon contrôleur api que j'utilise pour cela est le suivant :

    StoreDBContext db = new StoreDBContext();

    //
    // GET /api/goals
    public IQueryable<Goals> Get()
    {
        return db.Goals;
    }

Je suppose que je dois faire une boucle quelque part pour ajouter le nom de l'objet, mais je ne sais pas comment... J'espère que quelqu'un pourra m'aider !

3voto

Paul Tyng Points 5203

Retournez quelque chose comme ça :

new { Goal = db.Goals().AsEnumerable().ToList() }

Vous pouvez utiliser un objet anonyme pour ajouter des propriétés et des choses qui ne sont pas dans l'objet.

Vous pouvez également écrire des convertisseurs personnalisés pour JSON.NET si vous voulez qu'il se désérialise correctement, mais si vous ne vous souciez pas de la désérialisation de la sortie, la solution ci-dessus fonctionnera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X