C#使用Newtonsoft.JSON反序列化列表
我目前正在尝试反序列化产品列表,并且总是收到反序列化结果的C#使用Newtonsoft.JSON反序列化列表,c#,json,deserialization,C#,Json,Deserialization,我目前正在尝试反序列化产品列表,并且总是收到反序列化结果的null。我已经回顾了使用Newtonsoft.JSON序列化和反序列化集合的方法,但仍在努力寻找发生这种情况的原因。在我当前的尝试中,我正在创建一个包装类products,用于保存我的产品列表。请参见下面的简单JSON示例和模型类: JSON示例 { "products":[ { "title":"Some title", "id":123, "shor
null
。我已经回顾了使用Newtonsoft.JSON序列化和反序列化集合的方法,但仍在努力寻找发生这种情况的原因。在我当前的尝试中,我正在创建一个包装类products
,用于保存我的产品列表。请参见下面的简单JSON示例和模型类:
JSON示例
{
"products":[
{
"title":"Some title",
"id":123,
"short_description":"some short description",
"variations":[
{
"id":234,
"sku":"N123456789",
"price":"1.50",
"stock_quantity":2
}
],
"some_field_we_dont_care_about":987
},
{
"title":"A different title",
"id":123,
"short_description":"Some other short description",
"variations":[
{
"id":234,
"sku":"NG1933410388C",
"price":"2.00",
"stock_quantity":800
}
],
"some_field_we_dont_care_about":123
}
]
}
products.cs
//wrapper class to facilitate json serialization
public class products
{
List<product> productList { get; set; }
}
以及实际尝试反序列化JSON的代码:
products products = JsonConvert.DeserializeObject<products>(productResponse.Content);
products-products=JsonConvert.DeserializeObject(productResponse.Content);
这不是序列化的原因是您没有“产品”属性:
public class products
{
List<product> productList { get; set; }
}
然后稍微更改反序列化逻辑:
var productCollection = JsonConvert.DeserializeObject<ProductCollection>(productResponse.Content);
var-productCollection=JsonConvert.DeserializeObject(productResponse.Content);
这不是序列化的原因是您没有“产品”属性:
public class products
{
List<product> productList { get; set; }
}
然后稍微更改反序列化逻辑:
var productCollection = JsonConvert.DeserializeObject<ProductCollection>(productResponse.Content);
var-productCollection=JsonConvert.DeserializeObject(productResponse.Content);
在productList属性上添加一个[JsonProperty(PropertyName=“products”)]
属性。您不需要所有的类/属性都是小写的,默认设置将公共十进制价格{get;set;}
与价格匹配:0.123
您还可以将类重命名为ProductCollection或其他更好的名称,并将productList
更改为Products
@CamiloTerevinto,谢谢。一旦我得到了一个工作示例,我就要测试套管的差异,看看我是否仍然可以使用标准的C#约定,或者我是否需要一些定制的东西convert@maccettura谢谢这起作用了。如果您想在回答中发布此内容,我很乐意接受。在productList属性上添加[JsonProperty(PropertyName=“products”)]
属性。您不需要所有的类/属性都是小写的,默认设置将与公共十进制价格{get;set;}
匹配“Price”:0.123
您还可以将类重命名为ProductCollection或其他更好的名称,并将productList
更改为Products
@CamiloTerevinto,谢谢。一旦我得到了一个工作示例,我就要测试套管的差异,看看我是否仍然可以使用标准的C#约定,或者我是否需要一些定制的东西convert@maccettura谢谢这起作用了。如果你想在回复中贴上这个,我很乐意接受。解释得很好。解释得很好。
var productCollection = JsonConvert.DeserializeObject<ProductCollection>(productResponse.Content);