C#Rest服务 - 无法在服务方法中接收JSON请求

时间:2017-07-26 07:09:51

标签: c# web-services rest wcf wcf-rest

我有一个REST服务,它接受来自客户端的JSON数据。我能够使用.Net类从客户端检索JSON输入。但我想以JSON字符串格式检索数据,而不是作为类对象。

这是我到目前为止所尝试的。

输入JSON

<input id="Text3" type="text" value='{ "searchBy": "Pending Cases", "displayOptions": [ {"producers": "yes", "GA/BGA/Firm": "yes"}],"userId": "xxx", "userAuthToken": "0000" }' /></p>

通过javascript调用服务

function CallService()
    {
        var inputJSON = $("#Text3").val();
        var endpointAddress = $("#Text1").val();
        var url = endpointAddress + $("#Text2").val();

        $.ajax({
            type: 'POST',
            url: url,
            contentType: 'application/json',
            data: inputJSON,
            success: function (result) {                    
                $("#Text4").val(" " + JSON.stringify(result));
            }
        });

    }

服务方 - 合同

[OperationContract]
    [WebInvoke(
        Method = "POST",
        BodyStyle = WebMessageBodyStyle.Bare,
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json)]
    string SearchPredefined(PredefinedSearchRequestModel PredefinedSearchRequest);

服务方法的实施

public string SearchPredefined(PredefinedSearchRequestModel PredefinedSearchRequest)
    {
        string outputStr = "PredefinedSearchRequest Object gets successfully populated here ";
        return outputStr;
    }

模型类

[DataContract]
public class PredefinedSearchRequestModel
{
    [DataMember]
    public string searchBy { get; set; }

    [DataMember]
    public List<displayOptionsModelPredefined> displayOptions { get; set; }

    [DataMember]
    public string userId { get; set; }

    [DataMember]
    public string userAuthToken { get; set; }

}

[DataContract]
[Serializable]
public class displayOptionsModelPredefined
{
    [DataMember]
    public string producers { get; set; }

    [DataMember(Name="GA/BGA/Firm")]
    public string firm { get; set; }
}

到目前为止,这些代码运行良好。当客户端使用JSON数据调用我的服务时,服务方法会被命中并且模型对象已成功填充。

但是,我需要使用与我的服务相同的JSON字符串调用另一个第三方服务。这就是为什么我需要Raw JSON / string格式的输入数据,而不是C#对象。

如何将服务器端的数据作为JSON字符串获取?

1 个答案:

答案 0 :(得分:0)

我建议使用NewtonSoft在SearchPredefined中序列化对象并将结果传递给:

var serializedObject = Newtonsoft.Json.JsonConvert.SerializeObject<PredefinedSearchRequestModel>(PredefinedSearchRequest);