Estou recebendo o k_BackingField em meu json retornado após serializar um arquivo xml para um objeto .net c #.
Eu adicionei o DataContract e o atributo DataMember ao objeto .net c #, mas não recebo nada no json, client end.
[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")]
}
Exemplo do json retornado:
home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"
fonte
Remover
[Serializable]
da sua classefonte
[Serializable]
, então adicionar campos de apoio ajudou.O serializador WebApi padrão adicionará a sintaxe "__BackingField:" às propriedades automáticas do c #. Adicione-o ao WebConfig em App_Start para obter o json de aparência mais limpa que você pode estar procurando.
fonte
Temos alguns objetos que são marcados como
[Serializable]
para que possam ser serializados usando métodos tradicionais, mas que precisamos serializar de forma limpa em JSON para uso com a Web API. DefinirIgnoreSerializableAttribute
comotrue
impedirá o Newtonsoft.Json de se comportar como serializadores da Microsoft e, em vez disso, apenas serializará as propriedades públicas.TLDR: adicione a WebApiConfig.cs:
Moderador: Em vez de excluir uma resposta realmente boa a uma pergunta que foi feita várias vezes, exclua a pergunta duplicada. Esta é uma resposta válida para uma pergunta válida.
fonte
Forma simples, fácil e decente de expor os dados Precisamos expor os dados no objeto para um formato fácil de ler e consistente
Primeiro remova [Serializable]
agora adicione [DataContract] na classe e [DataMember] para a propriedade como o exemplo abaixo
Espero esta ajuda,
obrigado.
fonte
Algumas opções:
Remover
[Serializable]
do modeloAdicione
[DataContract]
e[DataMember]
ao seu modelo junto com[Serializable]
Adicionar linha abaixo para
App_Start/WebApiConfig.cs
fonte
Outra solução que pode ajudar no caso do JSON.NET. Pode ser o suficiente para marcar a classe com o atributo [Newtonsoft.Json.JsonObject].
Eu estava trabalhando com classes cs criadas a partir do xsd e adicionando algumas propriedades usando classes parciais. Após a serialização json, essas propriedades foram marcadas com k_BackingField. As configurações de JsonFormatter mencionadas em outras respostas também ajudaram, mas mais simples foi marcar a classe parcial com o atributo [JsonObject].
fonte
Eu estava usando
DataContractJsonSerializer
com uma classe de outra montagem que tinha oSerializable
atributo. A saída continha "k__BackingField". Remover oSerializable
atributo (na outra montagem) corrigiu isso. Não sei por quê.fonte
Supondo que você veja esse problema dentro de seu projeto MVC, descobri que é muito simples substituir o uso de @ Html.JsonData. Aqui está um trecho de código que funcionou para mim no passado:
Não tão elegante, mas simples em uma pitada.
fonte
Eu tive esse problema quando tenho propriedades de autorreferência em minha classe, como;
E teve um resultado, a pessoa ficou amiga de si mesma. Eu apenas me certifiquei de que não havia objetos de autorreferência em meu conjunto de resultados. Espero que isto ajude.
fonte
Tive que usar os atributos [Serializable], portanto, removê-los não era uma opção.
XmlSerializer ignora [XmlAttribute] em WebApi
A resolução acima resolveu para mim.
fonte
no meu caso esse erro foi para a versão Newtonsoft.Json, o servidor procurou a versão 6.0.0 e eu tinha a 11.0, então tive que instalar a versão 6.0.0
fonte
Amigos, não declare propriedades como esta:
Mas, crie vars auxiliares, como o antigo ....
fonte