【问题标题】:JSON.NET compatible serialization to communicate with wcf REST与 wcf REST 通信的 JSON.NET 兼容序列化
【发布时间】:2013-02-05 11:56:01
【问题描述】:

我有一个关于 JSON.NET 序列化和使用 WCF REST Web 服务的问题。

我的设备运行 .NET 紧凑型框架并且功能支持有限,它使用 JSON.NET 进行序列化/反序列化。通过 HttpWebRequest 与使用字符串或简单类等参数的简单 WCF REST Web 服务进行通信就像一个魅力。

现在我必须传输一组键值对

List<KeyValuePair<int, object>>

用一个包含 Guid 作为值的元素序列化集合的结果如下所示:

[
    {
        "Key": 52120,
        "Value": "180047f8-2ee5-41bb-8da1-68bd94178d79"
    },
]

我认为这是正确的 json 格式,但如果我查看我的 WCF 服务,它需要我发送如下数据:

[{
    "key":2147483647,
    "value":{
        "KeyValuePairOfintanyType":{
            "key":2147483647,
            "value":{
                "KeyValuePairOfintanyType":null
            }
        }
    }
}]

发送由 JSON.NET 序列化的数据会导致连接中止。 有谁知道如何序列化通用列表以满足 WCF 服务的要求?有没有办法告诉 JSON.NET 插入那些 KeyValuePairOf... 格式?

【问题讨论】:

  • 只是想知道-您是否必须将您的收藏声明为List&lt;KeyValuePair&lt;int, object&gt;&gt;?此外,GUID 值在 WCF 期望的 JSON 中显示在哪里?
  • @DavidHoerster Guid 将作为 KeyValuePair 的“对象”传递,它的值是“”KeyValuePairOfintanyType”:null”。使用 List 没有特殊原因,但我需要一组键值对。我想在不使用泛型的情况下创建一个结构,但我想保持界面灵活。

标签: c# asp.net serialization compact-framework json.net


【解决方案1】:

使用DataContractJsonSerializer wcf 用于休息,它们完全兼容

【讨论】:

  • 遗憾的是这是不可能的,因为它在紧凑的框架中不可用。
  • 或者你可以使用restsharp,它有自己的模拟序列化但不能使用DataContract属性Name
  • 抱歉,这不是将反汇编的源代码“复制和粘贴”到我们项目中的选项。我已经尝试在 .NET 4.0 中使用 DataContractJsonSerializer 序列化同一个对象,但输出与 WCF 服务所需的不同,这让我感到困惑。
猜你喜欢
  • 2012-04-07
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多