我有一个非常简单的 DataContract 类,我需要将其反序列化。出于特定原因,我没有使用 JSON.NET,因此请使用 DataContractJsonSerializer。
我的合同类看起来像这样
[DataContract(Name = "d")]
public class ResponseClass
{
[DataMember]
public int ResponseCode
{ get; set;}
[DataMember]
public string ResponseMessage
{ get; set;}
[DataMember]
public string Response
{ get; set;}
}
服务调用返回一个有效的 Json 字符串,但在反序列化中,末尾的值始终为 0 或 string.Empty,尽管传入的值为非 0 或非 string.Empty。
我的反序列化代码看起来像这样
private string deserializeJSON(string resp, bool code = false)
{
string value = string.Empty;
ResponseClass deserialized = null;
using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(resp)))
{
stream.Position = 0;
var ser = new DataContractJsonSerializer(typeof(ResponseClass));
deserialized = ser.ReadObject(stream) as ResponseClass;
}
value = code ? deserialized.Response : deserialized.ResponseCode.ToString();
return value;
}
我四处寻找答案,但没有任何反应。
返回的数据看起来像这样(这就是为什么合同返回被称为“d” - 不确定这是否有所不同,但结果仍然相同,RespCode 为 0,RespMess,Resp = string.Empty)
{
"d":
{
"RespCode": 0,
"RespMess": null,
"Resp": null
}
}