我有一个非常简单的DataContract类,我需要反序列化到。我没有使用JSON.NET的特殊原因,所以使用DataContractJsonSerializer。反序列化JSON字符串到类
我的合同类看起来像这样
[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字符串回来了,但在deserialising,在最后的值始终为0或不顾的String.Empty传递的价值在非0或非string.Empty。
我deserialise代码如下所示
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
}
}
对不起,但您的答案没有enuf详细资料,我完全理解您的问题。 “结尾的价值”是什么意思总是零或字符串。是空的?你的意思是最后一个数据成员“响应”属性?通过“尽管值被传入”,你的意思是将值传递给你的私有字符串deserializeJSON(string resp,bool code = false)'方法吗? – Edward