Saya mendapatkan k_BackingField di json saya yang dikembalikan setelah membuat serial file xml ke objek .net c #.
Saya telah menambahkan DataContract dan atribut DataMember ke objek .net c # tapi kemudian saya tidak mendapatkan apa-apa di json, klien akhir.
[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")]
}
Contoh json yang dikembalikan:
home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"
sumber
Hapus
[Serializable]
dari kelas Andasumber
[Serializable]
, jadi menambahkan bidang dukungan membantu.Serializer WebApi default akan menambahkan sintaks "__BackingField:" ke c # auto-properties. Tambahkan ini ke WebConfig Anda di App_Start untuk mendapatkan json yang tampak lebih bersih yang mungkin Anda cari.
sumber
Kami memiliki beberapa objek yang ditandai
[Serializable]
sehingga mereka dapat diserialkan menggunakan metode tradisional, tetapi kami harus memiliki serialisasi yang rapi di JSON untuk digunakan dengan API Web. PengaturanIgnoreSerializableAttribute
ketrue
akan menghentikan Newtonsoft.Json berperilaku seperti penyerial Microsoft dan sebaliknya itu hanya akan membuat serial properti publik.TLDR: Tambahkan ini ke WebApiConfig.cs:
Moderator: Daripada menghapus jawaban yang sangat bagus untuk pertanyaan yang telah diajukan beberapa kali, harap hapus pertanyaan duplikat. Ini adalah jawaban yang valid untuk pertanyaan yang valid.
sumber
Sederhana Cara Mudah dan Layak untuk mengekspos data Kita perlu mengekspos data dalam objek ke format yang mudah dibaca dan konsisten
Pertama hapus [Serializable]
sekarang tambahkan [DataContract] di kelas dan [DataMember] untuk properti seperti contoh di bawah ini
Semoga bantuan ini
Terima kasih.
sumber
Beberapa opsi:
Hapus
[Serializable]
dari modelTambahkan
[DataContract]
dan[DataMember]
ke model Anda bersama dengan[Serializable]
Tambahkan baris di bawah ini ke
App_Start/WebApiConfig.cs
sumber
Solusi lain yang dapat membantu dalam kasus JSON.NET. Ini mungkin cukup untuk menandai kelas dengan atribut [Newtonsoft.Json.JsonObject].
Saya bekerja dengan kelas cs yang dibangun dari xsd dan menambahkan beberapa properti menggunakan kelas parsial. Setelah serialisasi json, properti ini ditandai dengan k_BackingField. Pengaturan JsonFormatter yang disebutkan dalam jawaban lain juga membantu, tetapi yang lebih sederhana adalah menandai kelas sebagian dengan atribut [JsonObject].
sumber
Saya menggunakan
DataContractJsonSerializer
dengan kelas dari majelis lain yang memilikiSerializable
atribut. Keluarannya berisi "k__BackingField". MenghapusSerializable
atribut (di perakitan lain) memperbaiki ini. Tidak yakin kenapa.sumber
Dengan asumsi Anda melihat masalah ini di dalam proyek MVC Anda, menurut saya cukup mudah untuk mengganti penggunaan @ Html.JsonData. Berikut ini cuplikan kode yang telah berhasil untuk saya di masa lalu:
Tidak seanggun, tapi sederhana dalam keadaan darurat.
sumber
Saya mengalami masalah ini ketika saya memiliki properti referensi mandiri di kelas saya seperti;
Dan hasilnya, orang itu berteman dengan dirinya sendiri. Saya hanya memastikan tidak ada objek referensi mandiri di set hasil saya. Semoga ini membantu.
sumber
Saya harus menggunakan atribut [Serializable], jadi menghapusnya bukanlah pilihan.
XmlSerializer mengabaikan [XmlAttribute] di WebApi
Resolusi di atas menyelesaikannya untuk saya.
sumber
dalam kasus saya kesalahan ini adalah untuk Versi Newtonsoft.Json, server mencari versi 6.0.0 dan saya memiliki versi 11.0, jadi saya harus menginstal versi 6.0.0
sumber
Teman, jangan nyatakan properti seperti ini:
Tapi, buat vars auxiliar, seperti lama ....
sumber