ฉันมักจะต้องขยายรูปแบบโดเมนของฉันด้วยข้อมูลเพิ่มเติมก่อนส่งคืนให้กับไคลเอ็นต์ด้วย WebAPI เพื่อหลีกเลี่ยงการสร้าง ViewModel ฉันคิดว่าฉันสามารถส่งคืน JObject พร้อมคุณสมบัติเพิ่มเติมได้ อย่างไรก็ตามฉันไม่สามารถหาวิธีโดยตรงในการแปลงวัตถุประเภทใดก็ได้เป็น JObject ด้วยการเรียกใช้ไลบรารี Newtonsoft JSON เพียงครั้งเดียว ฉันคิดสิ่งนี้ขึ้นมา:
- SerializeObject แรก
- จากนั้นแยกวิเคราะห์
- และขยาย JObject
เช่น.:
var cycles = cycleSource.AllCycles();
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var vm = new JArray();
foreach (var cycle in cycles)
{
var cycleJson = JObject.Parse(JsonConvert.SerializeObject(cycle, settings));
// extend cycleJson ......
vm.Add(cycleJson);
}
return vm;
ฉันเป็นวิธีที่ถูกต้อง?
JObject.FromObject(your_domain_object)
คือสิ่งที่คุณกำลังมองหา ดูคำตอบของ @ LB