Saya memiliki beberapa data dalam objek C # DataSet. Saya dapat membuat cerita bersambung sekarang menggunakan konverter Json.net seperti ini
DataSet data = new DataSet();
// do some work here to populate 'data'
string output = JsonConvert.SerializeObject(data);
Namun, ini menggunakan nama properti dari data
saat mencetak ke file .json. Saya ingin mengubah nama properti menjadi sesuatu yang berbeda (katakanlah, ubah 'foo' menjadi 'bar').
Dalam dokumentasi Json.net , di bawah 'Serializing and Deserializing JSON' → 'Serialization Attributes' tertulis "JsonPropertyAttribute ... memungkinkan namanya dikustomisasi". Tetapi tidak ada contoh. Adakah yang tahu cara menggunakan JsonPropertyAttribute untuk mengubah nama properti menjadi sesuatu yang lain?
( Tautan langsung ke dokumentasi )
Dokumentasi Json.net tampaknya jarang. Jika Anda memiliki contoh yang bagus, saya akan mencoba untuk menambahkannya ke dokumentasi resmi. Terima kasih!
sumber
Jawaban:
Anda bisa menghias properti yang ingin Anda kontrol namanya dengan
[JsonProperty]
atribut yang memungkinkan Anda menentukan nama yang berbeda:Dokumentasi: Atribut Serialisasi
sumber
[JsonProperty("FooBar")]
Jika Anda tidak memiliki akses ke kelas untuk mengubah properti, atau tidak ingin selalu menggunakan properti ganti nama yang sama, mengubah nama juga dapat dilakukan dengan membuat penyelesai kustom.
Misalnya, jika Anda memiliki kelas yang dipanggil
MyCustomObject
, yang memiliki properti bernamaLongPropertyName
, Anda dapat menggunakan penyelesai kustom seperti ini ...Kemudian panggil serialisasi dan berikan resolver:
Dan hasilnya akan disingkat menjadi {"Short": "prop value"} alih-alih {"LongPropertyName": "prop value"}
Info lebih lanjut tentang resolver khusus di sini
sumber
DefaultContractResolver
harus dimasukkan ke dalam majelis yang sama di mana metode JsonConvert.Serialize () digunakan.Masih ada cara lain untuk melakukannya, yaitu menggunakan Strategi Penamaan tertentu , yang dapat diterapkan ke kelas atau properti dengan mendekorasi mereka dengan
[JSonObject]
atau[JsonProperty]
.Ada beberapa strategi penamaan yang telah ditentukan
CamelCaseNamingStrategy
, tetapi Anda dapat menerapkannya sendiri.Penerapan berbagai strategi penamaan dapat ditemukan di sini: https://github.com/JamesNK/Newtonsoft.Json/tree/master/Src/Newtonsoft.Json/Serialization
sumber