【问题标题】:JSON Deserialization in c# receiving null values in all data membersc#中的JSON反序列化在所有数据成员中接收空值
【发布时间】:2017-01-11 10:36:27
【问题描述】:

以下是我的服务在调用时返回的有效 JSON:

[{
   "CCRQ": "2006/1/26 0:00:00",
   "CLXH": "CA6510B1",
   "CarBodyColor": "color"
}]

下面是我的包含数据成员的代码:

[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;
    }
}

为什么我的所有属性都为空?

【问题讨论】:

  • 'objResponse' 变量是否为空?但无论如何,问题可能在于“typeof(Response)”,因为 JSON 的类型是“List”而不是“Response”。
  • 根据您对[DataContract] 的使用,我假设您的 Web 服务正在使用 WCF。你为什么要创建HttpWebRequest?您可以为您的项目添加服务引用,并为您处理所有反序列化。
  • @Julo,问题是由于缺少列表。问题已解决。谢谢:)
  • @Chris Pickford,谢谢,该服务没有使用 WCF,我相信它是基于 Java 的。

标签: c# json rest serialization json-deserialization


【解决方案1】:

您的 JSON 是一个包含 1 个对象内容的数组。据我所知,您的反序列化程序需要一个对象。

尝试作为响应

{
   "CCRQ": "2006/1/26 0:00:00",
   "CLXH": "CA6510B1",
   "CarBodyColor": "color"
}

或投回复objResponse as List<Response>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多