从嵌套的 JSON 对象设置模型值



我收到一个以 JSON 字符串形式返回的产品菜单。 从这些数据中,我正在尝试填充产品型号列表并发送到我的视图以显示为一种实时菜单。 我用于检索数据的代码如下;排除正在发送的标头,因为我已经正确接收了所有内容;

var response = await httpClient.SendAsync(request);
var responseContent = response.Content.ReadAsStringAsync().Result;
List<MenuItem> Products = new List<MenuItem>();
JObject jsonObject = JObject.Parse(responseContent);
JToken item = jsonObject["data"];
foreach (var menuitem in item)
{
MenuItem product = new MenuItem(menuitem);
Products.Add(product);                        
}

我的菜单项模型正在接收每个单独的项目并尝试设置模型值;

public class MenuItem
{
public MenuItem(JToken product)
{
Id = (Int32)product["id"];
Name = (string)product["name"];
Item_Number = (string)product["item_number"];
Description = (string)product["description"];           

Pricing.Default_Price = (string)product["pricing"]["default_price"];
Pricing.Pricing_Group_Id = (Int32)product["pricing"]["pricing_group_id"];
}

该模型还有更多内容,但这应该是所需要的。

public Pricing Pricing { get; set; }
}
public class Pricing
{
public string Default_Price { get; set; }
public Int32 Pricing_Group_Id { get; set; }
public string Pricing_Group_Name { get; set; }
public WeightPrices Weight_Prices { get; set; }
}
public class WeightPrices
{
public Int32 Pricing_Weight_Id { get; set; }
public String Name { get; set; }
public float Default_Price { get; set; }
}

我遇到的问题是尝试从更深的子元素设置定价值。

Pricing.Default_Price = (string)product["pricing"]["default_price"];
Pricing.Pricing_Group_Id = (Int32)product["pricing"]["pricing_group_id"];

我的代码在遇到这些行时会抛出"对象引用未设置为对象的实例"。 在VS2017中添加手表时,该值是正确的,但我仍然收到此错误。 JSON 字符串的格式为;

{"data": [
{
"id": 2148487,
"name": "3.5 grams of Blue Dream",
"item_number": "8AEO00000001",
"description": "",
"pricing": {
"default_price": "20.00",
"pricing_group_id": 5908,
"weight_prices": [
{
"pricing_weight_id": 21504,
"default_price": "12.00",
"name": ".5g",
"uom": "GR",
"weight": 0.5
},
{
"pricing_weight_id": 21505,
"default_price": "20.00",
"name": "1g",
"uom": "GR",
"weight": 1
}
],
"pricing_group_name": "Top Shelf"
}

任何帮助将不胜感激,我还没有开始重量价格,这是下一步。

Pricing属性永远不会实例化,因此每当尝试在其上设置属性的值时,它都是 null。

在设置Default_Price之前,请设置Pricing = new Pricing()

最新更新