逆シリアル化する必要がある非常に単純な 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
}
}