J'obtiens le k_BackingField dans mon json renvoyé après avoir sérialisé un fichier xml vers un objet .net c #.
J'ai ajouté le DataContract et l'attribut DataMember à l'objet .net c # mais je n'obtiens rien du côté client json.
[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")]
}
Exemple du json renvoyé:
home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"
la source
Retirer
[Serializable]
de votre classela source
[Serializable]
, donc l'ajout de champs de sauvegarde a aidé.Le sérialiseur WebApi par défaut ajoutera cette syntaxe «__BackingField:» aux propriétés automatiques c #. Ajoutez ceci à votre WebConfig dans App_Start pour obtenir le json plus propre que vous recherchez.
la source
Nous avons certains objets qui sont marqués comme
[Serializable]
afin qu'ils puissent être sérialisés à l'aide de méthodes traditionnelles, mais que nous devons avoir sérialisé proprement en JSON pour une utilisation avec l'API Web. DéfinirIgnoreSerializableAttribute
surtrue
empêchera Newtonsoft.Json de se comporter comme les serialiseurs de Microsoft et à la place, il sérialisera simplement les propriétés publiques.TLDR: ajoutez ceci à WebApiConfig.cs:
Modérateur: Plutôt que de supprimer une très bonne réponse à une question qui a été posée plusieurs fois, veuillez supprimer la question en double. Ceci est une réponse valide à une question valide.
la source
Simple moyen facile et décent d'exposer les données Nous devons exposer les données dans l'objet dans un format facile à lire et cohérent
Supprimez d'abord [Serializable]
ajoutez maintenant [DataContract] dans la classe et [DataMember] pour la propriété comme dans l'exemple ci-dessous
J'espère que cette aide
Merci.
la source
Deux options:
Supprimer
[Serializable]
du modèleAjoutez
[DataContract]
et[DataMember]
à votre modèle avec[Serializable]
Ajouter ci-dessous la ligne à
App_Start/WebApiConfig.cs
la source
Une autre solution qui peut aider dans le cas de JSON.NET. Il peut suffire de marquer la classe avec l'attribut [Newtonsoft.Json.JsonObject].
Je travaillais avec des classes cs construites à partir de xsd et ajoutais des propriétés en utilisant des classes partielles. Après la sérialisation json, ces propriétés ont été marquées avec k_BackingField. Les paramètres JsonFormatter mentionnés dans d'autres réponses ont également aidé, mais le plus simple était de marquer une classe partielle avec l'attribut [JsonObject].
la source
J'utilisais
DataContractJsonSerializer
avec une classe d'un autre assemblage qui avait l'Serializable
attribut. La sortie contenait "k__BackingField". La suppression de l'Serializable
attribut (dans l'autre assembly) a résolu ce problème. Pas certain de pourquoi.la source
En supposant que vous voyiez ce problème dans votre projet MVC, j'ai trouvé qu'il était assez simple de remplacer l'utilisation de @ Html.JsonData. Voici un extrait de code qui a fonctionné pour moi dans le passé:
Pas aussi élégant, mais simple à la rigueur.
la source
J'ai eu ce problème lorsque j'ai des propriétés d'auto-référence dans ma classe telles que;
Et il y avait un résultat, la personne était amie avec elle-même. Je me suis juste assuré qu'il n'y avait pas d'objets auto-référençables dans mon jeu de résultats. J'espère que cela t'aides.
la source
J'ai dû utiliser les attributs [Serializable], donc le supprimer n'était pas une option.
XmlSerializer ignore [XmlAttribute] dans WebApi
La résolution ci-dessus l'a résolu pour moi.
la source
dans mon cas, cette erreur concernait la version Newtonsoft.Json, le serveur recherchait la version 6.0.0 et j'avais la 11.0, j'ai donc dû installer la version 6.0.0
la source
Amis, ne déclarez pas de propriétés comme celle-ci:
Mais, créez des vars auxiliaires, comme les anciens ...
la source