.Net Newton.Json 反序列化不起作用

.Net Newton.Json deserialize does not work

我在将 json 文件反序列化为 asp.net 应用程序中的模型时遇到了这个问题。 所以我从 api 调用

中获得了一个 Json 文件
"Motorola": [
        {
            "id": 534,
            "vendor": "Motorola",
            "type": "mobile_phone",
            "model": "MOTO Z2 FORCE",
            "models": [
                {
                    "condition": "C",
                    "price": 5269,
                    "local_price": 29745,
                    "id": 3407,
                    "memory": "128 GB",
                    "color": "lunar_grey",
                    "product": 534
                },
                {
                    "condition": "D",
                    "price": 4699,
                    "local_price": 26527,
                    "id": 3407,
                    "memory": "128 GB",
                    "color": "lunar_grey",
                    "product": 534
                }
...

还有三个模型

public class TradeInResponseModel
    {
        public string BrandName { get; set; }
        public List<TradeInBrandResponseModel> ModelsList { get; set; }
    }
public class TradeInBrandResponseModel
    {
        public int Id { get; set; }
        public string Vendor { get; set; }
        public string Type { get; set; }
        public string ModelName { get; set; }
        public List<TradeInProductResponseModel> ModelProducts {get;set;}
    }
public class TradeInProductResponseModel
    {
        public string Condition { get; set; }
        public int Price { get; set; }
        public int LocalPrice { get; set; }
        public int Id { get; set; }
        public string Memory { get; set; }
        public string Color { get; set; }
        public int ProductId { get; set; }
    }

但是在我运行TradeInResponseModel tradeInResponseModel = JsonConvert.DeserializeObject<TradeInResponseModel>(responseMessage);之后 其中 responseMessage 是 api 以 json 文件形式的响应 型号是 null 无法弄清楚这里出了什么问题。

您的 JSON 有一个带有单个 属性 的根对象,名为 Motorola,而不是 BrandName

在JavaScript(和JSON)中,对象实际上是字典。当您告诉序列化程序将 JSON 数据反序列化为特定对象时,它会尝试将每个字典键与对象 属性.

匹配

如果你想将这个 JSON 解析为字典,你应该使用 Dictionary<string,List<TradeInResponseModel>> 作为类型,例如:

var brands=JsonConvert.DeserializeObject<Dictionary<string,List<TradeInResponseModel>>>(
                  responseMessage);