我非常喜欢在运行ExpandoObject时编译服务器端动态对象,但是在JSON序列化期间我遇到了麻烦.首先,我实例化对象:
dynamic expando = new ExpandoObject();
var d = expando as IDictionary<string, object>;
expando.Add("SomeProp", SomeValueOrClass);
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.在我的MVC控制器中,我想将其作为JsonResult发送,所以我这样做:
return new JsonResult(expando);
Run Code Online (Sandbox Code Playgroud)
这将JSON序列化到下面,由浏览器使用:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
Run Code Online (Sandbox Code Playgroud)
但是,我真正喜欢的是看到这个:
{SomeProp: SomeValueOrClass}
Run Code Online (Sandbox Code Playgroud)
我知道我可以实现这个,如果我使用dynamic而不是ExpandoObject- JsonResult能够将dynamic属性和值序列化为单个对象(没有Key或Value业务),但我需要使用的原因ExpandoObject是因为我不知道所有的直到运行时我想要的对象属性,据我所知,我不能动态地添加属性dynamic而不使用ExpandoObject.
我可能不得不在我的javascript中筛选"关键","价值"业务,但我希望在将其发送给客户之前解决这个问题.谢谢你的帮助!