Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#中的JSON反序列化接收所有数据成员中的空值_C#_Json_Rest_Serialization_Json Deserialization - Fatal编程技术网

c#中的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

下面是我的服务在调用时返回的有效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; }

    [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的。