J'ai ci-dessous les données JSON

{
   "appDesc": {
                "description": "App description.",
                "message": "Create and edit presentations "
              },
   "appName": {
                "description": "App name.",
                "message": "Slides"
              }
}

Je veux désérialiser en objet de classe C#. J'utilise JsonConvert.DeserializeObject<>() pour obtenir cette fonctionnalité. Mais certains comment cela ne fonctionne pas.

 string JsonData= System.IO.File.ReadAllText(msgJSONpath);

 var moreInfo = JsonConvert.DeserializeObject<appName>(msg)



internal class appName
{
    public string message { get; set; }

    public string description { get; set; }
}

Ainsi, l'objet moreInfo aura 2 propriétés dans le message et la description.

-1
AMIT SHELKE 20 nov. 2018 à 09:48

3 réponses

Meilleure réponse

JObject définit la méthode Parse pour cela:

JObject json = JObject.Parse(str);

Ou essayez un objet tapé essayez:

Foo json  = JsonConvert.DeserializeObject<Foo>(str)
0
A.M. Patel 20 nov. 2018 à 06:58

Vous avez besoin de 2 classes C # car les propriétés de appName et appDesc sont exactement les mêmes.

  1. Pour stocker le nom de l'application

    public class appName {
      public string description { get; set; }
      public string message { get; set; }
    }
    
  2. Une classe pour avoir les deux classes ci-dessus comme propriétés

    public class appResult {
      public appName appDesc { get; set; }
      public appName appName { get; set; }
    
      public appResult() {
        appDesc = new appName();
        appName = new appName();
      }
    }
    }
    
  3. désérialiser le json

    var result = JsonConvert.DeserializeObject<appResult>(msg);
    
  4. Une fois que vous avez l'objet de résultat, vous pouvez obtenir votre appName

    var appName = result.appName;
    
0
JustLearning 20 nov. 2018 à 08:01

Tout d'abord, vous devez créer des classes basées sur votre JSON, si vous utilisez Visual Studio, vous pouvez copier la chaîne JSON dans votre presse-papiers et accéder à

Edition> Collage spécial> Coller JSON en tant que classes

Sinon, vous pouvez utiliser cet outil en ligne

Après cela, votre code devrait ressembler à ceci:

     string JsonData= System.IO.File.ReadAllText(msgJSONpath);

     var moreInfo = JsonConvert.DeserializeObject<RootObject>(msg);

Classes générées en fonction de votre JSON :

    public class AppDesc
{
    public string description { get; set; }
    public string message { get; set; }
}

public class AppName
{
    public string description { get; set; }
    public string message { get; set; }
}

public class RootObject
{
    public AppDesc appDesc { get; set; }
    public AppName appName { get; set; }
}
0
FarhadMohseni 20 nov. 2018 à 08:01