web-dev-qa-db-fra.com

Comment afficher la "classe Json Paste" dans Visual Studio 2012 en cliquant sur Coller spécial?

J'essaie d'utiliser la fonctionnalité spéciale passée de vs 2012 afin de générer une classe c # pour mes données Json. J'ai téléchargé le fichier Json.New à partir de NewtonSoft à partir de Nuget, puis j'ai ajouté une nouvelle classe .cs qui copiait mes données json dans le presse-papiers, mais lorsque je clique sur Edition-> Collage spécial -> je ne peux voir que: Coller XML en tant que Classes uniquement le Coller. La fonctionnalité Json en tant que classes ne s'affiche pas. Aucune suggestion? Merci d'avance

C’est ce que je reçois et notez que j’ai déjà installé Newtonsoft.Json:

http://icms.indevcogroup.com/uploads/untitled.png

16
Sam

J'ai créé un nouveau projet, installé Newtonsoft.Json et ajouté une classe.

Si votre fichier de classe est ouvert, copiez vos données Json et choisissez Edition -> Collage spécial. Les deux options suivantes s'affichent:

Paste Special with Json Option

Si vous avez un autre type de fichier ouvert (par exemple, app.config), vous voyez uniquement "Coller JSON en tant que classes" (et en grisé).

Paste Special - 1 option and greyed out

Cela semble un peu flippant cependant - parfois, je devais recopier les données avant qu'elles n'apparaissent.

Essayez a) de recopier vos données b) de jouer avec les fenêtres que vous avez ouvertes c) de réinstaller l’extension

21
Gareth

Lorsque vous sélectionnez le menu Édition> Collage spécial dans le code d'un fichier de classe, assurez-vous que le projet Visual Studio dans lequel se trouve votre fichier de classe a son 'Cadre cible' défini sur:

.NET Framework 3.5 + pour 'CollerJSONen tant que classes' 

.NET Framework 4.5 + pour 'CollerXMLen tant que classes'

Sinon, ces options n'apparaissent pas.

Le paramètre 'Cadre cible' se trouve sous Propriétés du projet> Application .

11
Sean M

Vous devez installer http://www.Microsoft.com/en-au/download/details.aspx?id=41532 pour que l’option apparaisse sous Collage spécial.

4
Guy Lowe

J'ai eu le même problème. Je sélectionnais la classe dans l'explorateur de solutions et n'obtenais que l'option XML. J'ai finalement mis ma carotte directement dans les accolades du public class, puis je suis allé dans Édition -> 'Collage spécial'.

Edit: Correction, qui génère une classe à l'intérieur de la classe. Au lieu de cela, je vais placer mon point d'insertion quelque part dans l'espace de noms. 'Coller les classes JSON' génère ensuite une classe publique Rootobject {} et d'autres classes publiques imbriquées dans le JSON du Presse-papiers.

2
Asymmetric3.141

J'ai eu le même problème et j'ai découvert que vous devriez avoir du texte JSON valide dans votre presse-papiers.

Étapes pour le faire fonctionner:

  1. Installez Web Essentials pour votre version de VS (Visual Studio). Page de téléchargement de Web Essentials
  2. Créez un fichier de classe vide dans VS.
  3. Copiez le texte JSON valide dans le presse-papiers. 
  4. Vous verrez maintenant le "Coller Json en tant que classes" sous Edition -> Collage spécial -> Coller Json en tant que classes

Exemple de saisie:

    {
       "firstName":"John",
       "lastName":"Smith",
       "age":25,
       "address":{
          "streetAddress":"21 2nd Street",
          "city":"New York",
          "state":"NY",
          "postalCode":"10021"
       },
       "phoneNumber":[
          {
             "type":"home",
             "number":"212 555-1234"
          },
          {
             "type":"fax",
             "number":"646 555-4567"
          }
       ]
    }

Exemple de sortie:

    public class Rootobject
    {
        public string firstName { get; set; }
        public string lastName { get; set; }
        public int age { get; set; }
        public Address address { get; set; }
        public Phonenumber[] phoneNumber { get; set; }
    }

    public class Address
    {
        public string streetAddress { get; set; }
        public string city { get; set; }
        public string state { get; set; }
        public string postalCode { get; set; }
    }

    public class Phonenumber
    {
        public string type { get; set; }
        public string number { get; set; }
    }
1
Darrelk

Essayez d'installer la mise à jour pour Visual Studio J'ai installé la mise à jour v4 et j'ai maintenant une option "Coller JSON en tant que classes".

0
user2005519