【发布时间】:2013-11-05 01:09:29
【问题描述】:
我有一个非常简单的 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.空)
{
"d":
{
"RespCode": 0,
"RespMess": null,
"Resp": null
}
}
【问题讨论】:
-
很抱歉,您的回答没有详细信息,我无法完全理解您的问题。 “末尾的值”始终为零或 string.Empty 是什么意思?您是指最后一个数据成员“响应”属性吗? “尽管传入了值”,您是指将值传递到您的
private string deserializeJSON(string resp, bool code = false)方法中吗?