1

为了向/从我们的 WCF 服务传递 JSON 数据,我们将方法的返回类型和参数类型替换为System.ServiceModel.Channels.Message之一。

这是一种解决方法,因为否则将使用默认的 DataContractJSONSerializer,它会抛出异常,因为我们的 DTO 对象将 DataContract 属性的 IsReference 设置设置为 true,而此序列化程序不支持。

例如,新的 Read 方法如下所示:

public Message ReadCars()
{
    ItemInfoList<CarDto> cars = this.ReadCars(this.jsonItem);
    string jsonString = JsonConvert.SerializeObject(cars);

    return WebOperationContext.Current.CreateTextResponse(jsonString,
                "application/json; charset=utf-8",
                Encoding.UTF8);
}

一切正常,但是当我们需要将 Car 参数传递给方法时,问题就来了,例如:

public Message CreateCar(Message car)

我们使用 AJAX 请求从 javascript 调用服务并传递 JSON 数据。

问题是如何将此 JSON 数据解析回 CarDTO 对象?

问题是消息将其正文存储为 XML 而不是 JSON,我们无法获得真正的请求数据。

PS 我们不想用自定义的序列化器替换默认序列化器。我们只想手动将对象序列化为 JSON,使用消息发送它们并从消息中取回对象(有问题的步骤)。

4

0 回答 0