WCF 将 - JSON 主体置于对象
本文关键字:对象 于对象 JSON 主体 WCF | 更新日期: 2023-09-27 18:33:50
这是我的第一个REST服务,基本上它是一个自托管服务,它正在端口上侦听PUT调用,该调用将具有JSON数据的有效负载。 我想将其转换为本机对象,我认为序列化程序可以自动执行此操作,但它不起作用。
这个SO确实对我有用:WCF REST服务JSON发布数据
我可以将 JSON 数据作为流获取并将其输出到日志中,但现在我想知道 WCF 是否可以自动将 JSON 数据放入我的对象。
JSON数据是这样的。
{
"ID": 639073,
"PatientFirst": "John",
"PatientLast": "Smith",
"Birthdate": "1/1/2000",
"PtEmail":"rdejournett@medfusion.com",
"Sex": "F",
"mrn": ""
}
我有一个ApptData类,就是这个。
[DataContract]
class ApptData {
[DataMember]
internal string ID = "";
[DataMember]
internal string PatientFirst = "";
[DataMember]
internal string PatientLast = "";
[DataMember]
internal string Birthdate = "";
[DataMember]
internal string PtEmail = "";
[DataMember]
internal string Sex = "";
[DataMember]
internal string mrn = "";
public ApptData() { }
}
而电子合同就是这样。 我想使用注释掉的东西。
[ServiceContract]
interface iContract
{
[OperationContract]
[WebInvoke(Method = "PUT", UriTemplate = "CheckinPUT", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
[OperationContract]
//Stream PatientCheckinWithDemos(ApptData data);
Stream PatientCheckinWithDemos(Stream streamdata);
}
我有一个解决方案,我在其中进行反序列化。 这并不难。
这是包含 iContract 的类。
public Stream PatientCheckinWithDemos(Stream streamdata) {
try {
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(ApptData));
ApptData data = (ApptData)ser.ReadObject(streamdata);
c.WriteToLog("Appt id is " + data.ID);
c.WriteToLog("PatientFirst is " + data.PatientFirst);
c.WriteToLog("PatientLast is " + data.PatientLast);
c.WriteToLog("PtEmail is " + data.PtEmail);
c.WriteToLog("Sex is " + data.Sex);
c.WriteToLog("Birthdate is " + data.Birthdate);
return GetStream("something");
} catch (Exception e) {
c.WriteToLog("Failure during Database Call to PatientCheckinWithDemos " + e.Message);
return GetStream("");
}
}