Json.Net – Serializza il nome della proprietà senza virgolette

Sto cercando di ottenere Json.Net per serializzare un nome di proprietà senza virgolette e trovando difficoltà a individuare la documentazione su Google. Come posso fare questo?

È in una parte molto piccola di un rendering JSON di grandi dimensioni, quindi preferirei aggiungere un attributo di proprietà, o sovrascrivere il metodo di serializzazione sulla class.

Attualmente, lo rende così:

"event_modal": { "href":"file.html", "type":"full" } 

E spero di ottenerlo come: ( href e type sono senza virgolette)

 "event_modal": { href:"file.html", type:"full" } 

Dalla class:

 public class ModalOptions { public object href { get; set; } public object type { get; set; } } 

È ansible, ma sconsiglio perché produrrebbe JSON non valido, come hanno sottolineato Marcelo e Marc nei loro commenti.

Utilizzando la libreria Json.NET è ansible ottenere ciò come segue:

 [JsonObject(MemberSerialization.OptIn)] public class ModalOptions { [JsonProperty] public object href { get; set; } [JsonProperty] public object type { get; set; } } 

Quando serializzi l’object usa il tipo JsonSerializer invece del tipo JsonConvert statico.

Per esempio:

 var options = new ModalOptions { href = "file.html", type = "full" }; var serializer = new JsonSerializer(); var stringWriter = new StringWriter(); using (var writer = new JsonTextWriter(stringWriter)) { writer.QuoteName = false; serializer.Serialize(writer, options); } var json = stringWriter.ToString(); 

Questo produrrà:

 {href:"file.html",type:"full"} 

Se si imposta la proprietà QuoteName dell’istanza JsonTextWriter su false, i nomi degli oggetti non verranno più citati.