我正在使用Asp.Net,虽然我之前已经完成了一些去处理Xml的工作,但我不必对json做同样的事情。
我得到的错误是根级别的数据无效,这是我之前看到过的Xml反序列化。
以下是我对回复的文档:
HTTP ResponseCode: 200
HTTP Status: OK
HTTP Body:
{
“Status”:”Success”,
“Response”:”0”,
“Price”:”10.00”,
“BuyerId”:999,
“BuyerContractId”:9999,
“Detail”:”https://...”
}
我正在使用WebClient来获取数据:
response = wc.UploadString(info.Endpoint, info.Data);
“response”是一个字符串。我使用这种方法反序列化:
public static T JsonResponse<T>(string response)
where T : class
{
var s = new DataContractJsonSerializer(typeof(T));
using (var r = XmlReader.Create(new StringReader(response)))
{
return (T)s.ReadObject(r);
}
}
我正在尝试反序列化的类是:
[DataContract]
public class ResponseProps
{
[DataMember(Name = "Status")]
public string Status { get; set; }
[DataMember(Name = "Response")]
public string Response { get; set; }
[DataMember(Name = "Price")]
public decimal Price { get; set; }
[DataMember(Name = "BuyerId")]
public string BuyerId { get; set; }
[DataMember(Name = "BuyerContractId")]
public string BuyerContractId { get; set; }
[DataMember(Name = "Detail")]
public string Detail { get; set; }
}
以下是它的名称:
var cr = XmlHelper.JsonResponse<ResponseProps>(response);
任何人都有关于我哪里出错的线索?
答案 0 :(得分:2)
假设数据格式为JSON
,我更改了以下内容 -
public static T JsonResponse<T>(string response)
where T : class
{
return JsonConvert.DeserializeObject<T>(response);
}
现在这很好用 -
var q = JsonResponse<ResponseProps>('jsonString');