Я получаю k_BackingField в моем возвращенном json после сериализации xml-файла в объект .net C #.
Я добавил DataContract и атрибут DataMember к объекту .net C #, но тогда я ничего не получаю на стороне клиента 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")]
}
Пример возвращенного json:
home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"
источник
Удалить
[Serializable]
из вашего классаисточник
[Serializable]
, поэтому добавление вспомогательных полей помогло.Сериализатор WebApi по умолчанию добавит этот синтаксис «__BackingField:» к автоматическим свойствам C #. Добавьте это в свой WebConfig в App_Start, чтобы получить более чистый на вид json, который вы, возможно, ищете.
источник
У нас есть некоторые объекты, которые помечены как
[Serializable]
так, чтобы их можно было сериализовать с использованием традиционных методов, но которые нам нужно четко сериализовать в JSON для использования с веб-API. УстановкаIgnoreSerializableAttribute
наtrue
остановит Newtonsoft.Json от поведения сериализаторов Microsoft, и вместо этого он просто сериализует общедоступные свойства.TL; DR: добавьте это в WebApiConfig.cs:
Модератор: Вместо того, чтобы удалять действительно хороший ответ на вопрос, который задавали несколько раз, удалите повторяющийся вопрос. Это верный ответ на правильный вопрос.
источник
Простой легкий и достойный способ предоставления данных Нам необходимо предоставить данные в объекте в легко читаемом и согласованном формате
Сначала удалите [Serializable]
теперь добавьте [DataContract] в класс и [DataMember] для свойства, как в примере ниже
Надеюсь на эту помощь.
Спасибо.
источник
Пара вариантов:
Удалить
[Serializable]
из моделиДобавьте
[DataContract]
и[DataMember]
к своей модели вместе с[Serializable]
Добавить строку ниже в
App_Start/WebApiConfig.cs
источник
Еще одно решение, которое может помочь в случае JSON.NET. Может быть достаточно отметить класс атрибутом [Newtonsoft.Json.JsonObject].
Я работал с классами cs, созданными из xsd, и добавлял некоторые свойства, используя частичные классы. После сериализации json эти свойства были отмечены k_BackingField. Настройки JsonFormatter, упомянутые в других ответах, также помогли, но более простым было отметить частичный класс атрибутом [JsonObject].
источник
Я использовал
DataContractJsonSerializer
с классом из другой сборки, у которой былSerializable
атрибут. Вывод содержал «k__BackingField». ЭтоSerializable
исправлено удалением атрибута (в другой сборке). Не знаю почему.источник
Предполагая, что вы видите эту проблему внутри своего проекта MVC, я обнаружил, что заменить использование @ Html.JsonData довольно просто. Вот фрагмент кода, который работал у меня в прошлом:
Не так элегантно, но в крайнем случае просто.
источник
У меня возникла эта проблема, когда в моем классе были свойства самосылки, например:
И вот результат, человек дружил сам с собой. Я просто удостоверился, что в моем наборе результатов нет объектов, ссылающихся на себя. Надеюсь это поможет.
источник
Мне пришлось использовать атрибуты [Serializable], поэтому их нельзя было удалить.
XmlSerializer игнорирует [XmlAttribute] в WebApi
Приведенное выше решение решило эту проблему для меня.
источник
в моем случае эта ошибка была для версии Newtonsoft.Json, сервер искал версию 6.0.0, а у меня была 11.0, поэтому мне пришлось установить версию 6.0.0
источник
Друзья, не объявляйте такие свойства:
Но создайте вспомогательные вары, например старые ....
источник