.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);
我在将 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);