Saya sangat suka ExpandoObject
saat menyusun objek dinamis sisi server saat runtime, tetapi saya mengalami masalah dalam meratakan hal ini selama serialisasi JSON. Pertama, saya memberi contoh objek:
dynamic expando = new ExpandoObject();
var d = expando as IDictionary<string, object>;
expando.Add("SomeProp", SomeValueOrClass);
Sejauh ini baik. Di pengontrol MVC saya, saya ingin mengirimkan ini sebagai JsonResult, jadi saya melakukan ini:
return new JsonResult(expando);
Ini membuat JSON menjadi serial di bawah ini, untuk digunakan oleh browser:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
TAPI, yang benar-benar saya inginkan adalah melihat ini:
{SomeProp: SomeValueOrClass}
Saya tahu saya dapat mencapai ini jika saya menggunakan dynamic
alih-alih ExpandoObject
- JsonResult
dapat membuat serialisasi dynamic
properti dan nilai menjadi satu objek (tanpa bisnis Kunci atau Nilai), tetapi alasan saya perlu menggunakan ExpandoObject
adalah karena saya tidak tahu semua properti yang saya inginkan pada objek hingga runtime , dan sejauh yang saya tahu, saya tidak dapat secara dinamis menambahkan properti ke a dynamic
tanpa menggunakan ExpandoObject
.
Saya mungkin harus menyaring bisnis "Kunci", "Nilai" di javascript saya, tetapi saya berharap untuk mencari tahu sebelum mengirimkannya ke klien. Terima kasih atas bantuan Anda!