【问题标题】:Cannot access child value on Newtonsoft.Json.Linq.JProperty error无法访问 Newtonsoft.Json.Linq.JProperty 错误的子值
【发布时间】:2021-08-23 01:49:23
【问题描述】:

我有这种 json 格式,我正在使用 ASP.NET 制作 API。

{
  "0": {
    "order_id": 11748,
    "complete_date": "2021-04-19 14:48:41",
    "shipping_code": "aramex.aramex",
    "awbs": [
      {
        "aramex_id": "1314",
        "order_id": "11748",
        "awb_number": "46572146154",
        "reference_number": "11748",
        "date_added": "2021-03-04 03:46:58"
      }
    ],
    "payment": {
      "method": {
        "name": "الدفع عند الاستلام",
        "code": "cod"
      },
      "invoice": [
        {
          "code": "sub_total",
          "value": "120.8700",
          "value_string": "120.8700 SAR",
          "title": "الاجمالي"
        },
        {
          "code": "shipping",
          "value": "0.0000",
          "value_string": "0.0000 SAR",
          "title": "ارمكس"
        },
        {
          "code": "coupon",
          "value": "-13.9000",
          "value_string": "-13.9000 SAR",
          "title": "قسيمة التخفيض(RMP425)"
        },
        {
          "code": "cashon_delivery_fee",
          "value": "5.0000",
          "value_string": "5.0000 SAR",
          "title": "رسوم الدفع عند الاستلام"
        },
        {
          "code": "tax",
          "value": "18.1300",
          "value_string": "18.1300 SAR",
          "title": " ضريبة القيمة المضافة (15%)"
        },
        {
          "code": "total",
          "value": "130.1000",
          "value_string": "130.1000 SAR",
          "title": "الاجمالي النهائي"
        }
      ]
    },
    "product": [
      {
        "id": 69,
        "name": "مخلط 4 أو دو بيرفيوم للجنسين - 100 مل",
        "sku": "45678643230",
        "weight": "0.50000000",
        "quantity": 1,
        "productDiscount": "",
        "images": []
      }
    ]
  }
}

如何联系order_id?我创建了一个对象,假设它的名称是 obj1 我尝试了 foreach obj1 并将其存储到变量 obj1.order_id; 它将 null 存储在变量中。 {"0"} 是从 0-1-2 等开始的订单编号。

【问题讨论】:

  • 将此json反序列化为Dictionary<string,Order>,其中Order类的属性为int order_id
  • @Omar 检查我的答案,希望对您有所帮助!

标签: asp.net json api


【解决方案1】:

你可以deserialize那个json到Dictionary<string,dynamic>而不用创建一个新的类,如下:

var values = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json);

var orderId = values["0"]["order_id"].ToString();

这会给你11748作为结果。

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 2018-03-10
    • 2023-03-24
    • 1970-01-01
    • 2022-11-25
    • 2021-08-21
    • 1970-01-01
    • 2021-01-23
    • 2021-08-09
    相关资源
    最近更新 更多