我真的很喜欢在运行ExpandoObject时编译服务器端动态对象,但我在 JSON 序列化期间无法将这个东西展平。首先,我实例化对象:
dynamic expando = new ExpandoObject();
var d = expando as IDictionary<string, object>;
expando.Add("SomeProp", SomeValueOrClass);
到现在为止还挺好。在我的 MVC 控制器中,我想将它作为 JsonResult 发送下来,所以我这样做:
return new JsonResult(expando);
这会将 JSON 序列化为以下内容,供浏览器使用:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
但是,我真正想要的是看到这个:
{SomeProp: SomeValueOrClass}
我知道如果我使用dynamic而不是ExpandoObject--JsonResult能够将dynamic属性和值序列化为单个对象(没有键或值业务),我可以实现这一点,但我需要使用的原因ExpandoObject是因为我不知道所有我想要在对象上的属性直到运行时,据我所知,如果dynamic不使用ExpandoObject.
我可能需要在我的 javascript 中筛选“关键”、“value”业务,但我希望在将其发送给客户之前弄清楚这一点。谢谢你的帮助!