原文出处: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" });

1367

被折叠的 条评论
为什么被折叠?



