Otrzymuję k_BackingField w zwróconym jsonie po serializacji pliku xml do obiektu c # .net.
Dodałem DataContract i atrybut DataMember do obiektu c # .net, ale potem nic nie widzę po stronie json, po stronie klienta.
[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")]
}
Przykład zwróconego pliku json:
home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"
źródło
Usuń
[Serializable]
z zajęćźródło
[Serializable]
, więc dodanie pól pomocniczych pomogło.Domyślny serializator WebApi doda składnię „__BackingField:” do właściwości automatycznych języka C #. Dodaj to do swojej konsoli WebConfig w App_Start, aby uzyskać bardziej przejrzysty plik JSON, którego możesz szukać.
źródło
Mamy pewne obiekty, które są oznaczone jako
[Serializable]
tak, aby można je było serializować przy użyciu tradycyjnych metod, ale które musimy czysto serializować w formacie JSON do użytku z interfejsem API sieci Web. UstawienieIgnoreSerializableAttribute
natrue
powstrzyma Newtonsoft.Json przed zachowaniem się jak serialisers Microsoftu, a zamiast tego po prostu serializuje właściwości publiczne.TLDR: Dodaj to do WebApiConfig.cs:
Moderator: Zamiast usuwać naprawdę dobrą odpowiedź na pytanie, które zostało zadane kilka razy, usuń zduplikowane pytanie. To jest prawidłowa odpowiedź na ważne pytanie.
źródło
Prosty, łatwy i przyzwoity sposób na ujawnienie danych Musimy udostępnić dane w obiekcie w czytelnym i spójnym formacie
Najpierw usuń [serializowalny]
teraz dodaj [DataContract] w klasie i [DataMember] dla właściwości jak w poniższym przykładzie
Mam nadzieję, że ta pomoc
dzięki.
źródło
Kilka opcji:
Usuń
[Serializable]
z modeluDodaj
[DataContract]
i[DataMember]
do swojego modelu wraz z[Serializable]
Dodaj poniższą linię do
App_Start/WebApiConfig.cs
źródło
Kolejne rozwiązanie, które może pomóc w przypadku JSON.NET. Wystarczy oznaczyć klasę atrybutem [Newtonsoft.Json.JsonObject].
Pracowałem z klasami cs zbudowanymi z xsd i dodawałem niektóre właściwości za pomocą klas częściowych. Po serializacji json te właściwości zostały oznaczone k_BackingField. Ustawienia JsonFormatter wspomniane w innych odpowiedziach również pomogły, ale prostsze było oznaczenie częściowej klasy atrybutem [JsonObject].
źródło
Używałem
DataContractJsonSerializer
z klasą z innego zestawu, który miałSerializable
atrybut. Dane wyjściowe zawierały „k__BackingField”. UsunięcieSerializable
atrybutu (w innym zestawie) naprawiło ten problem. Nie pewny dlaczego.źródło
Zakładając, że widzisz ten problem w swoim projekcie MVC, stwierdziłem, że zastąpienie użycia @ Html.JsonData jest całkiem proste. Oto fragment kodu, który działał dla mnie w przeszłości:
Nie tak eleganckie, ale proste w mgnieniu oka.
źródło
Wystąpił ten problem, gdy w mojej klasie są właściwości odniesienia do siebie, takie jak;
I był rezultat, osoba była ze sobą zaprzyjaźniona. Po prostu upewniłem się, że w moim zestawie wyników nie ma obiektów odwołujących się do siebie. Mam nadzieję że to pomoże.
źródło
Musiałem użyć atrybutów [Serializable], więc ich usunięcie nie wchodziło w grę.
XmlSerializer ignoruje [XmlAttribute] w WebApi
Powyższa rezolucja rozwiązała to za mnie.
źródło
w moim przypadku ten błąd był dla wersji Newtonsoft.Json, serwer szukał wersji 6.0.0 i miałem 11.0 więc musiałem zainstalować wersję 6.0.0
źródło
Przyjaciele, nie deklarujcie takich właściwości:
Ale stwórz pomocnicze zmienne, takie jak stare ...
źródło