web-dev-qa-db-fra.com

Conversion d'une liste d'objets en tableau JSON

J'ai une liste d'objets de classe qui ont des adresses e-mail et des données d'état. J'essaie de les convertir en json, en m'assurant d'avoir le mot "opérations" sur le tableau.

Voici ma classe:

class MyClass
{
    public string email {get; set; }
    public string status { get; set; }
}

Voici mon code actuel (pas en construction):

List<MyClass> data = new List<MyClass>();
data = MagicallyGetData();

string json = new {
     operations = new {
          JsonConvert.SerializeObject(data.Select(s => new {
               email_address = s.email,
               status = s.status
          }))
     }
};

Voici le JSON que j'essaye d'obtenir:

{
  "operations": [
    {
      "email_address": "[email protected]",
      "status": "good2go"
    },
    {
      "email_address": "[email protected]",
      "status": "good2go"
    },...
  ]
}

EDIT1 Je dois mentionner que les données que j'obtiens pour cela proviennent d'une base de données. Je désérialise un JSON de la base de données et j'utilise les données de plusieurs manières différentes, donc je ne peux pas changer les noms des membres de ma classe.

9
Blankdud

Je crois que cela vous donnera ce que vous voulez. Vous devrez changer les noms de propriété de votre classe si possible -

        class MyClass
        {
             public string email_address { get; set; }
             public string status { get; set; }
        }

        List<MyClass> data = new List<MyClass>() { new MyClass() { email_address = "[email protected]", status = "good2go" }, new MyClass() { email_address = "[email protected]", status = "good2go" } };
        var json = JsonConvert.SerializeObject(new
        {
            operations = data
        });
11
James Dev

Vous pouvez essayer avec quelque chose comme ceci:

using System.Web.Script.Serialization;
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(data);
0
Claudio M
class MyClass
{
     public string email_address { get; set; }
     public string status { get; set; }
}

List<MyClass> data = new List<MyClass>() { new MyClass() { email_address = "[email protected]", status = "good2go" }, new MyClass() { email_address = "[email protected]", status = "good2go" } };

//Serialize
var json = JsonConvert.SerializeObject(data);

//Deserialize
var jsonToList = JsonConvert.DeserializeObject<List<MyClass>>(json);
0
Theo Fernandes