从List(C#UWP)获取价值

时间:2016-09-21 08:30:36

标签: c# uwp

我有课程

 public class RootObject
    {
        public int id { get; set; }
        public int parent_id { get; set; }
        public string status { get; set; }
        public string order_key { get; set; }
        public string currency { get; set; }
        public string version { get; set; }
        public bool prices_include_tax { get; set; }
        public string date_created { get; set; }
        public string date_modified { get; set; }
        public int customer_id { get; set; }
        public double discount_total { get; set; }
        public double discount_tax { get; set; }
        public double shipping_total { get; set; }
        public double shipping_tax { get; set; }
        public double cart_tax { get; set; }
        public double total { get; set; }
        public double total_tax { get; set; }
        public Billing billing { get; set; }
        public Shipping shipping { get; set; }
        public string payment_method { get; set; }
        public string payment_method_title { get; set; }
        public string transaction_id { get; set; }
        public string customer_ip_address { get; set; }
        public string customer_user_agent { get; set; }
        public string created_via { get; set; }
        public string customer_note { get; set; }
        public string date_completed { get; set; }
        public string date_paid { get; set; }
        public string cart_hash { get; set; }
        public List<object> line_items { get; set; }
        public List<object> tax_lines { get; set; }
        public List<object> shipping_lines { get; set; }
        public List<object> fee_lines { get; set; }
        public List<object> coupon_lines { get; set; }

    }

我得到这样的数据

List<RootObject> rootObjectData = JsonConvert.DeserializeObject<List<RootObject>>(products);
   foreach (RootObject root in rootObjectData)
        {
            int id = root.id;
            int customer_id = root.customer_id;

            string fio = root.billing.first_name + " " + "  " + root.billing.last_name;
            string adress = root.billing.address_1 + " " + "  " + root.billing.address_2;
            double total = root.total;
            string telephone = root.billing.phone;

line_itemsList<object>类型

line_items我有一些带数据的json。

例如

"line_items": [
{
  "product_id": 93,
  "quantity": 2
},
{
  "product_id": 22,
  "variation_id": 23,
  "quantity": 1
}

],

我如何获得例如product_id

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:4)

您可以使用非常强大的动态:

List<dynamic> lineItems = jsonObject.line_items;

foreach (dynamic line_item in lineItems)
{
  int productId = line_item.product_id; 
}

请记住:

由于重命名/其他因素,它可能会崩溃 - dynamic非常强大,但要谨慎使用。

您也可以直接访问它而无需您创建的“类” - 只需反序列化为动态并访问字段!

答案 1 :(得分:1)

如果不够明显

using Newtonsoft.Json.Linq;

foreach(object line_item in line_items)
{
    JObject line_item_jobject = line_item as JObject;
    Jvalue product_id = line_item_jobject["product_id"] as JValue;
    int product_id_value = (int)product_id.Value;

    // Another way
    int product_id_value2 = line_item_jobject.Value<int>("product_id");
}