newtonsoft - serializar y deserializar json c#
Json.Net-Serializar el nombre de la propiedad sin comillas (1)
Estoy intentando que Json.Net serialice el nombre de una propiedad sin comillas y me resulta difícil localizar la documentación en Google. ¿Cómo puedo hacer esto?
Está en una parte muy pequeña de un render Json grande, por lo que prefiero agregar un atributo de propiedad o anular el método de serialización en la clase.
Actualmente, la rinda de esta manera:
"event_modal":
{
"href":"file.html",
"type":"full"
}
Y espero que se muestre como: ( href
y type
son sin comillas)
"event_modal":
{
href:"file.html",
type:"full"
}
De la clase
public class ModalOptions
{
public object href { get; set; }
public object type { get; set; }
}
Es posible, pero lo desaconsejo ya que produciría JSON no válido, como Marcelo y Marc han señalado en sus comentarios.
Usando la biblioteca Json.NET puedes lograr esto de la siguiente manera:
[JsonObject(MemberSerialization.OptIn)]
public class ModalOptions
{
[JsonProperty]
public object href { get; set; }
[JsonProperty]
public object type { get; set; }
}
Al serializar el objeto, use el tipo JsonSerializer lugar del tipo estático JsonConvert .
Por ejemplo:
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();
Esto producirá:
{href:"file.html",type:"full"}
Si establece la propiedad QuoteName de la instancia de JsonTextWriter en falso, los nombres de los objetos ya no serán citados.