【问题标题】:WCF answer processing C#WCF 答案处理 C#
【发布时间】:2017-04-04 15:51:31
【问题描述】:

有一个 WCF 服务,我需要使用它的方法。

方法采用 3 个参数 - 字符串、日期时间、日期时间。

所以我的代码是这样的:

ServiceReference.LogsServiceClient myclient;
myclient = new ServiceReference.LogsServiceClient();
var response = myclient.GetHotPeriodLogs("somestring", dtFrom, dtTo);

========

方法返回的数据类型是某个数组(ServiceReference.TechLog[])

似乎答案是 json 响应数组。

所以,我有异常“无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1"

我想问一下,使用答案的方法是什么? 此外,我需要将每个数据字符串插入到 MSSQL DB 中,因此我需要获取数据集。那么,我该怎么办?

【问题讨论】:

  • 所以你的方法应该返回一个数组,但你的响应是 JSON。您需要使用像 Newtonsoft 这样的库以某种方式对其进行转换。或者只是自己解析 JSON。
  • 有 newtonsoft 的例子吗?
  • 你能充实你的代码吗?您是否在需要数组的方法中返回响应?方法签名是什么?
  • 方法接受 3 个参数 - 字符串、日期时间、日期时间并返回一个数组 ServiceReference.TechLog[] 这是在 WCF 服务中声明的对象。在对象资源管理器中,我可以看到它的字段。服务不在我这边,所以我看不到它的代码。
  • 这是您尝试编写的一种方法,还是 WCF 编写的一种方法?如果您正在编写它,为什么要尝试返回 ServiceReference.TechLog[]?

标签: c# json wcf client


【解决方案1】:

好的。首先让我们假设这是您的 ServiceReference.TechLog 对象:

public class TechLog
{
    public DateTime CreationDate { get; set; }
    public string Email { get; set; }
    public bool IsApproved { get; set; }
}

现在我们需要一个这样的 json deserilzer 方法:

public static T JsonDeserializer<T>(string jsonString)
{
    var settings = new JsonSerializerSettings { DateFormatHandling=DateFormatHandling.MicrosoftDateFormat };
    var instance = JsonConvert.DeserializeObject<T>(jsonString, settings);
    return instance;
}

这就是我们所需要的。现在我们可以像这样对任何东西进行反序列化:

    var x = JsonDeserializer<TechLog[]>(response);

【讨论】:

  • @ОлегСидоров 很高兴能为您提供帮助。请将其标记为答案,以便关闭。
猜你喜欢
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多