2016-02-26 21 views
9

Mam listę obiektów klasy, które mają członków adresów e-mail i dane stanu. Próbuję przekształcić je w json, upewniając się, że słowo "operacje" w tablicy.Konwertowanie listy obiektów do tablicy json

To moja klasa:

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

To jest mój aktualny kod (nie budowy):

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 
      })) 
    } 
}; 

Jest to JSON Próbuję dostać:

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

EDIT1 Należy wspomnieć, że dane, które otrzymuję za pochodzi z DB. Usuwam szeregowanie JSON z DB i używanie danych na kilka różnych sposobów, więc nie mogę zmienić nazw członków mojej klasy.

+0

co ty właściwie coraz? – Arpit

+0

Dlaczego denerwujesz się anonimowymi obiektami? Zamiast tego użyj datacontrat lub atrybutu nazwy http://www.newtonsoft.com/json/help/html/JsonPropertyName.htm – cdie

+0

@ Arpit Najbliższy, jaki otrzymałem, jest ten sam wynik bez łańcucha operacji przed tablicą. – Blankdud

Odpowiedz

11

Wierzę, że to da ci to, czego chcesz. Trzeba będzie zmienić nazwy właściwości klasy, jeśli to możliwe -

 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 
     }); 
+0

Dzięki kilku poprawkom, jest to rozwiązanie, z którym współpracowałem. Dzięki, doceń to. – Blankdud

+1

Co, jeśli nie chcę danych ani operacji na początku? –

+1

@HafizH, jeśli nie chcesz "operacji" na początku, po prostu wykonaj: 'var json = JsonConvert.SerializeObject (operacje)' – Valip

0

Można spróbować z czymś takim:

using System.Web.Script.Serialization; 
var jsonSerialiser = new JavaScriptSerializer(); 
var json = jsonSerialiser.Serialize(data); 
Powiązane problemy