c# - 从 MVC3 应用程序序列化、返回和使用复杂 C# 对象的最佳方法是什么?

标签 c# json asp.net-mvc asp.net-mvc-3 serialization

这是我的情况:我有一个 MVC3 应用程序,它有一些非常复杂的 C# 对象,这些对象被呈现到这个应用程序的 View 中。然而,我有一个新的要求:一个控制台应用程序(我也在写)将在一个调度程序下运行,它需要从这个 MVC3 应用程序中拉出这些对象,然后用这些复杂的对象做一些其他事情。

因为我可以控制这两个应用程序,所以我可以在它们之间共享一个包含复杂对象的库。所有这些对象都被标记为 [Serializable]。但是,我想不出一种简单的方法来序列化这些对象并将它们从 MVC3 应用程序发送到控制台应用程序。

我尝试了简单的 JavaScriptSerializer 并使用 HttpClient 读取字符串,然后在控制台应用程序端反序列化它,但不幸的是它没有正确反序列化数据。一切都是空的。当它到达控制台应用程序时,我可以在断点处检查字符串,并且所有数据都在字符串中,但它只是没有正确反序列化。

有没有更简单的方法来做到这一点?我不关心序列化方法是什么。数据不必作为 JSON 传递,除了我的应用程序外,其他应用程序都不会使用这些对象。但到目前为止,我还想不出生产/消费这些对象的最简单方法。

我知道我可以完成整个“创建 Web 服务契约(Contract)”并使用数据注释路线,但我希望有一种更简单、更省时的方法。

最佳答案

使用 Json.NET :

服务器端

string serializedObject = JsonConvert.SerializeObject(yourComplexObject);
// Send the string to the client...

客户端

在客户端,你甚至不需要知道反序列化对象的类型,你可以利用anonymous objectsdynamic :

string serializedObject = // ... Fetch from server
dynamic complexObject = JsonConvert.DeserializeObject(serializedObject);
// ...
string id = complexObject.UserId;

附言:请注意对象的方法或状态不会被序列化,只有公共(public)属性会被序列化。

关于c# - 从 MVC3 应用程序序列化、返回和使用复杂 C# 对象的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550336/

相关文章:

c# - 添加 View / Controller 在 ASP.Net Core 中不起作用

c# - 从 id 属性获取 xml 节点值 C#

c# - 在 C# 中,你能找到你的计算机使用的代理服务器吗?

c# - WCF : How cand you add multiple MessageBodyMember to a MessageContract if one is Stream

php - 在 PHP 上解析 JSON 并提取特定值

c# - 被 Angularjs 困住了

C# 无法捕获 StackOverflowException 或查看它发生的位置

json - JSONObject 累加​​和放置有什么区别?

java - 使用 Jackson 解析复杂的 JSON 对象

javascript - 在做 ASP.NET MVC 3 时,我想知道为什么开发人员想要更多的 javascript 库,比如 backbone 和 coffeescript