Obtengo k_BackingField en mi json devuelto después de serializar un archivo xml en un objeto .net c #.
Agregué el DataContract y el atributo DataMember al objeto .net c # pero luego no obtengo nada en el json, cliente.
[XmlRoot("person")]
[Serializable]
public class LinkedIn
{
[XmlElement("id")]
public string ID { get; set; }
[XmlElement("industry")]
public string Industry { get; set; }
[XmlElement("first-name")]
public string FirstName { get; set; }
[XmlElement("last-name")]
public string LastName { get; set; }
[XmlElement("headline")]
}
Ejemplo del json devuelto:
home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"
fuente
Eliminar
[Serializable]
de tu clasefuente
[Serializable]
, por lo que agregar campos de respaldo ayudó.El serializador WebApi predeterminado agregará esa sintaxis "__BackingField:" a las propiedades automáticas de c #. Agregue esto a su WebConfig en App_Start para obtener el json de aspecto más limpio que podría estar buscando.
fuente
Tenemos algunos objetos que están marcados
[Serializable]
para que se puedan serializar utilizando métodos tradicionales, pero que necesitamos serializarlos limpiamente en JSON para usarlos con la API web. EstablecerIgnoreSerializableAttribute
entrue
impedirá que Newtonsoft.Json se comporte como los serializadores de Microsoft y, en su lugar, solo serializará las propiedades públicas.TLDR: agregue esto a WebApiConfig.cs:
Moderador: En lugar de eliminar una respuesta realmente buena a una pregunta que se ha formulado varias veces, elimine la pregunta duplicada. Esta es una respuesta válida a una pregunta válida.
fuente
Una forma sencilla, fácil y decente de exponer datos Necesitamos exponer los datos en el objeto a un formato fácil de leer y coherente
Primero elimine [Serializable]
ahora agregue [DataContract] en la clase y [DataMember] para la propiedad como el siguiente ejemplo
Espero que esto ayude
Gracias.
fuente
Un par de opciones:
Quitar
[Serializable]
del modeloAgregue
[DataContract]
y[DataMember]
a su modelo junto con[Serializable]
Añada la siguiente línea a
App_Start/WebApiConfig.cs
fuente
Otra solución que puede ayudar en el caso de JSON.NET. Puede ser suficiente marcar la clase con el atributo [Newtonsoft.Json.JsonObject].
Estaba trabajando con clases cs creadas a partir de xsd y estaba agregando algunas propiedades usando clases parciales. Después de la serialización json, estas propiedades se marcaron con k_BackingField. La configuración de JsonFormatter mencionada en otras respuestas también ayudó, pero más simple fue marcar una clase parcial con el atributo [JsonObject].
fuente
Estaba usando
DataContractJsonSerializer
con una clase de otro ensamblado que tenía elSerializable
atributo. La salida contenía "k__BackingField". La eliminación delSerializable
atributo (en el otro ensamblaje) solucionó esto. No estoy seguro de por qué.fuente
Suponiendo que vea este problema dentro de su proyecto MVC, descubrí que es bastante simple reemplazar el uso de @ Html.JsonData. Aquí hay un fragmento de código que me ha funcionado en el pasado:
No tan elegante, pero simple en un apuro.
fuente
Tuve este problema cuando tengo propiedades de autorreferencia en mi clase, como;
Y hubo un resultado, la persona era amiga de sí misma. Solo me aseguré de que no hubiera objetos de autorreferencia en mi conjunto de resultados. Espero que esto ayude.
fuente
Tuve que usar los atributos [Serializable], por lo que eliminarlos no era una opción.
XmlSerializer ignora [XmlAttribute] en WebApi
La resolución anterior me lo resolvió.
fuente
en mi caso este error fue para la versión Newtonsoft.Json, el servidor buscó la versión 6.0.0 y yo tenía la 11.0, así que tuve que instalar la versión 6.0.0
fuente
Amigos, no declaren propiedades como esta:
Pero, crea vars auxiliares, como antes ...
fuente