【问题标题】:WCF - Rest and JSON Operation ParametersWCF - Rest 和 JSON 操作参数
【发布时间】:2009-11-03 14:02:38
【问题描述】:

我正在 WCF 中实现一个通用的 restful api。我需要访问从 JSON 反序列化的通用对象(作为 POST 操作的参数)。我正在使用原始编程模型来允许对返回格式进行细粒度控制。例如:

// Create
[OperationContract(Name = "CreateJSON")]
[WebInvoke(UriTemplate = "{endpointName}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Stream Create(Object input, String endpointName);

在上面的示例中,通用对象由我希望作为 POST 有效负载的参数“输入”给出。类似的调用适用于以 xml 为目标的端点,但不适用于 JSON。

任何想法/帮助将不胜感激。有人吗?

【问题讨论】:

    标签: c# wcf json rest


    【解决方案1】:

    有一个命名空间 System.Runtime.Serialization.Json

    要序列化通用对象,您可以这样做:

    /// Object to Json
    let internal json<'t> (myObj:'t) =  
            use ms = new MemoryStream()
            (new DataContractJsonSerializer(typeof<'t>)).WriteObject(ms, myObj)
            Encoding.Default.GetString(ms.ToArray())
    

    ...

    /// Object from Json
    let internal unjson<'t> (jsonString:string)  : 't = 
            use ms = new MemoryStream(ASCIIEncoding.Default.GetBytes(jsonString))
            let obj = (new DataContractJsonSerializer(typeof<'t>)).ReadObject(ms)
            obj :?> 't
    

    我希望 F# 没问题... ;-)

    【讨论】:

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