C# Rest 服务 - 无法在服务方法中接收 JSON 请求
Posted
技术标签:
【中文标题】C# Rest 服务 - 无法在服务方法中接收 JSON 请求【英文标题】:C# Rest service - unable to receive JSON request inside service method 【发布时间】:2018-01-01 08:35:09 【问题描述】:我有一个 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 字符串调用另一个 3rd 方服务。这就是为什么我需要原始 JSON/字符串格式的输入数据,而不是 C# 对象。
如何将服务器端的数据作为 JSON 字符串获取?
【问题讨论】:
【参考方案1】:我建议使用 NewtonSoft 在 SearchPredefined 中序列化对象并将结果传递给:
var serializedObject = Newtonsoft.Json.JsonConvert.SerializeObject<PredefinedSearchRequestModel>(PredefinedSearchRequest);
【讨论】:
以上是关于C# Rest 服务 - 无法在服务方法中接收 JSON 请求的主要内容,如果未能解决你的问题,请参考以下文章
无法以 GET 类型的方法将字典作为参数传递给 WCF REST 服务