我有一个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字符串获取?
答案 0 :(得分:0)
我建议使用NewtonSoft在SearchPredefined中序列化对象并将结果传递给:
var serializedObject = Newtonsoft.Json.JsonConvert.SerializeObject<PredefinedSearchRequestModel>(PredefinedSearchRequest);