【问题标题】:C# web service response arraysC# Web 服务响应数组
【发布时间】:2012-04-28 06:20:46
【问题描述】:

我最近使用 C# 构建了一个 Web 服务客户端。我选择 C# 是因为 Web 服务组件功能强大且易于使用(比 Gsoap 或 Axis IMO 更容易使用)。

我的 C# 应用程序在后台运行,并且应该返回我的应用程序的其他部分(包括 Web 应用程序、PLC 和数据库)可以存储和使用的数据。

我的回复如下所示:

[
 [
     string
     int
     []
 ]
 string
 []
 int
]

等等……

关键是返回值并不简单。我的问题是,从我的应用程序的其他部分重新格式化和使用这些数据的最佳方法是什么?

我的选择是:

  1. XML
  2. JSON

我检查了这两条路线,但没有找到一种很好的方法来序列化这些数据。谁能给点建议?

在最坏的情况下,我可能只需要创建一个通用例程来使用 StringBuilder 构建 XML,但我希望有一些我还不知道的东西(我是 C# 新手)可以让我的生活变得轻松。

【问题讨论】:

  • 您的 Web 服务客户端是否在序列化数据以供应用程序的其余部分使用?您的应用程序的其余部分是否正在进行中?如果是这样,为什么要对其进行序列化和反序列化?你能在一个对象模型中表示数据,然后把那个/那些对象传回去吗?
  • 这是什么网络服务? ASMX 还是 WCF?
  • @JMD 我的应用程序的其余部分不在 C# 中(PHP 和 C 的混合),因此 C# 对象将不起作用
  • @John Saunders Web 服务是 SOAP 并且是用 Java 编写的,我使用 C# 中的 Web 服务引用来使用它,我所要做的就是让它解析 WSDL

标签: c# xml arrays web-services serialization


【解决方案1】:

你肯定可以使用 JSON。

使用JavaScriptSerializer类来序列化数据和你的OK:http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

var data = new { name = "someValue", id = 1 };

var json = new System.Web.Script.Serialization.JavaScriptSerializer();

return json.Serialize(data);

我还没有测试过这段代码(我现在不在我的开发机器上),但我确信它可以根据您的需要进行一些调整。

【讨论】:

  • 这很好用。我之前尝试过这种方法,但似乎无法让 Services.Web.Extensions 工作。我又试了一次,发现了这篇文章:stackoverflow.com/questions/1987733/… 非常感谢!
【解决方案2】:

为什么不为返回值创建 DTO 类并使用 JSON 或 XML 序列化?非常方便。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多