c#中的JSON反序列化接收所有数据成员中的空值
下面是我的服务在调用时返回的有效JSON:c#中的JSON反序列化接收所有数据成员中的空值,c#,json,rest,serialization,json-deserialization,C#,Json,Rest,Serialization,Json Deserialization,下面是我的服务在调用时返回的有效JSON: [{ "CCRQ": "2006/1/26 0:00:00", "CLXH": "CA6510B1", "CarBodyColor": "color" }] 下面是我包含datamembers的代码: [DataContract] public class Response { [DataMember(Name = "CCRQ")] public string CCRQ { get; set; } [Dat
[{
"CCRQ": "2006/1/26 0:00:00",
"CLXH": "CA6510B1",
"CarBodyColor": "color"
}]
下面是我包含datamembers的代码:
[DataContract]
public class Response
{
[DataMember(Name = "CCRQ")]
public string CCRQ { get; set; }
[DataMember(Name = "CLXH")]
public string CLXH { get; set; }
[DataMember(Name = "CarBodyColor")]
public string CarBodyColor { get; set; }
}
但是,我请求服务并在所有数据成员中接收null
public static Response MakeRequest(string requestUrl)
{
HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Response));
object objResponse = jsonSerializer.ReadObject(response.GetResponseStream());
Response jsonResponse = objResponse as Response;
return jsonResponse;
}
}
为什么所有属性都为空?您的JSON是一个包含1个对象内容的数组。据我所见,反序列化程序需要一个对象 尝试作为回应
{
"CCRQ": "2006/1/26 0:00:00",
"CLXH": "CA6510B1",
"CarBodyColor": "color"
}
或将对objResponse的cast响应转换为列表“objResponse”变量是否为空?但无论如何,问题可能在于“typeof(Response)”,因为JSON的类型是“List”,而不是“Response”。从您对
[DataContract]
的使用来看,我假设您的web服务使用的是WCF。为什么要创建一个HttpWebRequest
?您可以将服务引用添加到项目中,所有的反序列化都会为您处理。@Julo,问题是由于缺少列表。这个问题已经解决了。谢谢:)@Chris Pickford,谢谢,该服务没有使用WCF,我相信它是基于Java的。