我有一個非常簡單的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