相关疑难解决方法(0)

如何在asp.net mvc中展平通过JsonResult返回的ExpandoObject?

我非常喜欢在运行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中筛选"关键","价值"业务,但我希望在将其发送给客户之前解决这个问题.谢谢你的帮助!

javascript c# asp.net-mvc json expandoobject

93
推荐指数
5
解决办法
4万
查看次数

标签 统计

asp.net-mvc ×1

c# ×1

expandoobject ×1

javascript ×1

json ×1