c# – 使用Json.NET將任何類型的對象轉換爲JObject (實用、贊)

原文出處:http://www.voidcn.com/article/p-peftggfi-bss.html

我經常需要擴展我的域模型與額外的信息,然後返回到客戶端與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實現了IDictionary,所以你可以使用它。例如,

var cycleJson  = JObject.Parse(@"{""name"":""john""}");

//add surname
cycleJson["surname"] = "doe";

//add a complex object
cycleJson["complexObj"] = JObject.FromObject(new { id = 1, name = "test" });

所以最終的json會

{
  "name": "john",
  "surname": "doe",
  "complexObj": {
    "id": 1,
    "name": "test"
  }
}

您還可以使用動態關鍵字

dynamic cycleJson  = JObject.Parse(@"{""name"":""john""}");
cycleJson.surname = "doe";
cycleJson.complexObj = JObject.FromObject(new { id = 1, name = "test" });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章