我在本地计算机上获得了Json文件,需要将其反序列化为类对象Products。我打算将Newtonsoft.Json库用作控制台应用程序。我通过以下代码实现,可以看到jsonString,但没有做正确的JsonConvert.DeserializeObject(st)???
我的json也有带有嵌套记录的产品数组!
com.google.application
-ClassWithMainMethod
com.google.application.job
com.google.application.job.listener
com.google.application.job.service
com.google.application.job.utils
com.google.application.job.repository
com.google.application.job.components
com.google.application.job.configuration
{
"products": [
{
"id": "1",
"name": "red apple",
"pricePerUnit ": "1.53"
},
{
"id": "2",
"name": "green walnut",
"pricePerUnit ": "0.25"
},
{
"id": "3",
"name": "avocado",
"pricePerUnit ": "0.33"
}
]
}
var stream = File.OpenText("C:\\Products.json");
string st = stream.ReadToEnd();
var result = JsonConvert.DeserializeObject<Products>(st);
答案 0 :(得分:3)
您可以重塑POCO:
EC2
然后按如下所示反序列化它:
public class ProductEntity
{
[JsonProperty("products")]
public List<Product> Products { get; set; }
}
public class Product
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("price")]
public string PricePerUnit { get; set; }
}
答案 1 :(得分:1)
您的问题是json上下文中不存在pricePerUnit,您需要使用数据注释来指定您希望将价格解释为pricePerUnit
public class Products
{
public string id { get; set; }
public string name { get; set; }
[JsonProperty(PropertyName = "price")]
public string pricePerUnit { get; set; }
}
编辑:
正如奇闻趣事发布的那样,您没有正确地反序列化,您将需要一个List或将其反序列化为ProductEntity。
var result = JsonConvert.DeserializeObject<ProductEntity>(st);
var result = JsonConvert.DeserializeObject<List<Products>>(st);
这两个都是正确的,但是由于您已经有了ProductEntity,所以我建议使用第一个。另一个次要的东西,类名应该是单数