2015-06-24 9 views
6

Ho incontrato prima questo problema, dove creo un modello di dati che verrà serializzato in seguito in una stringa JSON, ma voglio che la classe che contiene le proprietà sia serializzata. Vedere l'esempio di seguito:Qual è il modo corretto di racchiudere un oggetto JSON in un altro oggetto?

ho il mio modello di dati:

public class MyModel 
{ 
    [JsonProperty(PropertyName = "Prop1")] 
    public string Property1 { get; set; } 

    [JsonProperty(PropertyName = "Prop2")] 
    public string Property2 { get; set; } 
} 

che sarebbe poi serializzare a:

{ 
    "Prop1":"Some Value", 
    "Prop2":"Some Value" 
} 

C'è un modo per rendere serializzare a:

{ 
    "MyModel": 
    { 
     "Prop1":"Some Value", 
     "Prop2":"Some Value" 
    } 
} 

Quello che sto facendo attualmente, che non sembra affatto corretto, è qualcosa del genere per creare un oggetto di avvolgimento per m y JSON:

string object = @"{""ticket"":" + JsonConvert.SerializeObject(model) + @"}"

C'è una sorta di attributo che posso aggiungere alla mia classe qualcosa di simile:

[SerializeThisClass, ProperName="MyModel"] 
public class MyModel 
{ 
    [JsonProperty(PropertyName = "Prop1")] 
    public string Property1 { get; set; } 

    [JsonProperty(PropertyName = "Prop2")] 
    public string Property2 { get; set; } 
} 
+2

Usa JsonConvert.SerializeObject (new {MyModel = modello}) ; Questo crea un oggetto anonimo con una proprietà semplice denominata MyModel. –

risposta

9
JsonConvert.SerializeObject(new{ MyModel = model}) 

dovrebbe essere ok

1

Aggiungi un'altra classe che ha MyModel come suo membro quindi serializzare il genitore.

public class Parent 
{ 
    [JsonProperty(PropertyName = "MyModel")] 
    public MyModel MyModel { get; set; } 

} 
0

si può raggiungere che con questo

public class MyModel 
{ 
     [JsonProperty(PropertyName = "Prop1")] 
     public string Property1 { get; set; } 

     [JsonProperty(PropertyName = "Prop2")] 
     public string Property2 { get; set; } 
} 
public class Wrapper{ 
     [JsonProperty(PropertyName = "MyModel")] 
    public MyModel myModel{get;set;} 
} 

quindi serializzare l'oggetto wrapper

Problemi correlati