【问题标题】:Woo commerce json to Dataset or datatableWoo commerce json 到数据集或数据表
【发布时间】:2016-07-22 07:38:26
【问题描述】:
{"orders":[{"id":41,"order_number":41,"created_at":"2016-07-21T06:34:43Z","updated_at":"2016-07-21T06:34:43Z","completed_at":"2016-07-21T06:34:43Z","status":"processing","currency":"INR","total":"25000.00","subtotal":"25000.00","total_line_items_quantity":10,"total_tax":"0.00","total_shipping":"0.00","cart_tax":"0.00","shipping_tax":"0.00","total_discount":"0.00","shipping_methods":"","payment_details":{"method_id":"cod","method_title":"Cash on Delivery","paid":false},"billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN"},"note":"","customer_ip":"43.239.77.131","customer_user_agent":"Mozilla\/5.0 (Windows NT 6.1; rv:48.0) Gecko\/20100101 Firefox\/48.0","customer_id":2,"view_order_url":"http:\/\/woocommerce-5468-12693-128023.cloudwaysapps.com\/my-account\/view-order\/41","line_items":[{"id":8,"subtotal":"25000.00","subtotal_tax":"0.00","total":"25000.00","total_tax":"0.00","price":"2500.00","quantity":10,"tax_class":null,"name":"Yellow Saree","product_id":27,"sku":"","meta":[]}],"shipping_lines":[],"tax_lines":[],"fee_lines":[],"coupon_lines":[],"customer":{"id":2,"created_at":"2016-07-21T05:58:17Z","email":"harsh@resolutesolutions.in","first_name":"HARSH","last_name":"KANTHARIA","username":"harsh","role":"customer","last_order_id":"41","last_order_date":"2016-07-21T06:34:43Z","orders_count":3,"total_spent":"29600.00","avatar_url":"http:\/\/2.gravatar.com\/avatar\/?s=96","billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ACE GROUP","address_1":"20 DHANLAXMI BUNGLOWS","address_2":"PAL","city":"SURAT","state":"GJ","postcode":"395009","country":"IN"}}},{"id":40,"order_number":40,"created_at":"2016-07-21T06:01:28Z","updated_at":"2016-07-21T06:01:28Z","completed_at":"2016-07-21T06:01:28Z","status":"processing","currency":"INR","total":"3600.00","subtotal":"3600.00","total_line_items_quantity":2,"total_tax":"0.00","total_shipping":"0.00","cart_tax":"0.00","shipping_tax":"0.00","total_discount":"0.00","shipping_methods":"","payment_details":{"method_id":"cod","method_title":"Cash on Delivery","paid":false},"billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN"},"note":"","customer_ip":"43.239.77.131","customer_user_agent":"Mozilla\/5.0 (Windows NT 6.1; rv:48.0) Gecko\/20100101 Firefox\/48.0","customer_id":2,"view_order_url":"http:\/\/woocommerce-5468-12693-128023.cloudwaysapps.com\/my-account\/view-order\/40","line_items":[{"id":6,"subtotal":"2100.00","subtotal_tax":"0.00","total":"2100.00","total_tax":"0.00","price":"2100.00","quantity":1,"tax_class":null,"name":"Orange Saree","product_id":31,"sku":"","meta":[]},{"id":7,"subtotal":"1500.00","subtotal_tax":"0.00","total":"1500.00","total_tax":"0.00","price":"1500.00","quantity":1,"tax_class":null,"name":"Test product","product_id":10,"sku":"testproduct","meta":[]}],"shipping_lines":[],"tax_lines":[],"fee_lines":[],"coupon_lines":[],"customer":{"id":2,"created_at":"2016-07-21T05:58:17Z","email":"harsh@resolutesolutions.in","first_name":"HARSH","last_name":"KANTHARIA","username":"harsh","role":"customer","last_order_id":"41","last_order_date":"2016-07-21T06:34:43Z","orders_count":3,"total_spent":"29600.00","avatar_url":"http:\/\/1.gravatar.com\/avatar\/?s=96","billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ACE GROUP","address_1":"20 DHANLAXMI BUNGLOWS","address_2":"PAL","city":"SURAT","state":"GJ","postcode":"395009","country":"IN"}}},{"id":39,"order_number":39,"created_at":"2016-07-21T05:58:17Z","updated_at":"2016-07-21T05:58:17Z","completed_at":"2016-07-21T05:58:17Z","status":"processing","currency":"INR","total":"1000.00","subtotal":"1000.00","total_line_items_quantity":1,"total_tax":"0.00","total_shipping":"0.00","cart_tax":"0.00","shipping_tax":"0.00","total_discount":"0.00","shipping_methods":"","payment_details":{"method_id":"cod","method_title":"Cash on Delivery","paid":false},"billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN"},"note":"","customer_ip":"43.239.77.131","customer_user_agent":"Mozilla\/5.0 (Windows NT 6.1; rv:48.0) Gecko\/20100101 Firefox\/48.0","customer_id":2,"view_order_url":"http:\/\/woocommerce-5468-12693-128023.cloudwaysapps.com\/my-account\/view-order\/39","line_items":[{"id":5,"subtotal":"1000.00","subtotal_tax":"0.00","total":"1000.00","total_tax":"0.00","price":"1000.00","quantity":1,"tax_class":null,"name":"Test Saree product","product_id":15,"sku":"","meta":[]}],"shipping_lines":[],"tax_lines":[],"fee_lines":[],"coupon_lines":[],"customer":{"id":2,"created_at":"2016-07-21T05:58:17Z","email":"harsh@resolutesolutions.in","first_name":"HARSH","last_name":"KANTHARIA","username":"harsh","role":"customer","last_order_id":"41","last_order_date":"2016-07-21T06:34:43Z","orders_count":3,"total_spent":"29600.00","avatar_url":"http:\/\/1.gravatar.com\/avatar\/?s=96","billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ACE GROUP","address_1":"20 DHANLAXMI BUNGLOWS","address_2":"PAL","city":"SURAT","state":"GJ","postcode":"395009","country":"IN"}}},{"id":38,"order_number":38,"created_at":"2016-07-21T05:24:29Z","updated_at":"2016-07-21T05:24:29Z","completed_at":"2016-07-21T05:24:29Z","status":"processing","currency":"INR","total":"3600.00","subtotal":"3600.00","total_line_items_quantity":2,"total_tax":"0.00","total_shipping":"0.00","cart_tax":"0.00","shipping_tax":"0.00","total_discount":"0.00","shipping_methods":"","payment_details":{"method_id":"cod","method_title":"Cash on Delivery","paid":false},"billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN"},"note":"","customer_ip":"43.239.77.131","customer_user_agent":"Mozilla\/5.0 (Windows NT 6.1; rv:48.0) Gecko\/20100101 Firefox\/48.0","customer_id":0,"view_order_url":"http:\/\/woocommerce-5468-12693-128023.cloudwaysapps.com\/my-account\/view-order\/38","line_items":[{"id":4,"subtotal":"3600.00","subtotal_tax":"0.00","total":"3600.00","total_tax":"0.00","price":"1800.00","quantity":2,"tax_class":null,"name":"Black Saree","product_id":23,"sku":"DM3103","meta":[]}],"shipping_lines":[],"tax_lines":[],"fee_lines":[],"coupon_lines":[],"customer":{"id":0,"email":"harsh@resolutesolutions.in","first_name":"HARSH","last_name":"KANTHARIA","billing_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN","email":"harsh@resolutesolutions.in","phone":"9723638788"},"shipping_address":{"first_name":"HARSH","last_name":"KANTHARIA","company":"ITACHI GROUP","address_1":"20 dhanlaxmi bunglows","address_2":"nr nakshatra appartment,pal","city":"surat","state":"GJ","postcode":"395009","country":"IN"}}},{"id":37,"order_number":37,"created_at":"2016-07-20T08:17:21Z","updated_at":"2016-07-20T08:17:21Z","completed_at":"2016-07-20T08:17:21Z","status":"processing","currency":"INR","total":"2100.00","subtotal":"2100.00","total_line_items_quantity":1,"total_tax":"0.00","total_shipping":"0.00","cart_tax":"0.00","shipping_tax":"0.00","total_discount":"0.00","shipping_methods":"","payment_details":{"method_id":"cod","method_title":"Cash on Delivery","paid":false},"billing_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN","email":"info@resolutesolutions.in","phone":"9874563210"},"shipping_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN"},"note":"","customer_ip":"43.239.77.131","customer_user_agent":"Mozilla\/5.0 (Windows NT 6.3; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/51.0.2704.103 Safari\/537.36","customer_id":1,"view_order_url":"http:\/\/woocommerce-5468-12693-128023.cloudwaysapps.com\/my-account\/view-order\/37","line_items":[{"id":3,"subtotal":"2100.00","subtotal_tax":"0.00","total":"2100.00","total_tax":"0.00","price":"2100.00","quantity":1,"tax_class":null,"name":"Orange Saree","product_id":31,"sku":"","meta":[]}],"shipping_lines":[],"tax_lines":[],"fee_lines":[],"coupon_lines":[],"customer":{"id":1,"created_at":"2016-06-27T05:01:55Z","email":"info@resolutesolutions.in","first_name":"","last_name":"","username":"info@resolutesolutions.in","role":"administrator","last_order_id":"37","last_order_date":"2016-07-20T08:17:21Z","orders_count":3,"total_spent":"7300.00","avatar_url":"http:\/\/0.gravatar.com\/avatar\/?s=96","billing_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN","email":"info@resolutesolutions.in","phone":"9874563210"},"shipping_address":{"first_name":"","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"","postcode":"","country":""}}},{"id":35,"order_number":35,"created_at":"2016-06-27T08:09:00Z","updated_at":"2016-06-27T13:46:28Z","completed_at":"2016-06-27T13:46:28Z","status":"completed","currency":"INR","total":"4200.00","subtotal":"4200.00","total_line_items_quantity":2,"total_tax":"0.00","total_shipping":"0.00","cart_tax":"0.00","shipping_tax":"0.00","total_discount":"0.00","shipping_methods":"","payment_details":{"method_id":"cod","method_title":"Cash on Delivery","paid":false},"billing_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN","email":"info@resolutesolutions.in","phone":"9874563210"},"shipping_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN"},"note":"","customer_ip":"43.239.77.131","customer_user_agent":"Mozilla\/5.0 (Windows NT 6.3; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/51.0.2704.103 Safari\/537.36","customer_id":1,"view_order_url":"http:\/\/woocommerce-5468-12693-128023.cloudwaysapps.com\/my-account\/view-order\/35","line_items":[{"id":2,"subtotal":"4200.00","subtotal_tax":"0.00","total":"4200.00","total_tax":"0.00","price":"2100.00","quantity":2,"tax_class":null,"name":"Orange Saree","product_id":31,"sku":"","meta":[]}],"shipping_lines":[],"tax_lines":[],"fee_lines":[],"coupon_lines":[],"customer":{"id":1,"created_at":"2016-06-27T05:01:55Z","email":"info@resolutesolutions.in","first_name":"","last_name":"","username":"info@resolutesolutions.in","role":"administrator","last_order_id":"37","last_order_date":"2016-07-20T08:17:21Z","orders_count":3,"total_spent":"7300.00","avatar_url":"http:\/\/1.gravatar.com\/avatar\/?s=96","billing_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN","email":"info@resolutesolutions.in","phone":"9874563210"},"shipping_address":{"first_name":"","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"","postcode":"","country":""}}},{"id":19,"order_number":19,"created_at":"2016-06-27T05:27:34Z","updated_at":"2016-06-27T05:27:34Z","completed_at":"2016-06-26T23:57:34Z","status":"processing","currency":"INR","total":"1000.00","subtotal":"1000.00","total_line_items_quantity":1,"total_tax":"0.00","total_shipping":"0.00","cart_tax":"0.00","shipping_tax":"0.00","total_discount":"0.00","shipping_methods":"","payment_details":{"method_id":"cod","method_title":"Cash on Delivery","paid":false},"billing_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN","email":"info@resolutesolutions.in","phone":"9874563210"},"shipping_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN"},"note":"","customer_ip":"43.239.77.131","customer_user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko\/20100101 Firefox\/44.0","customer_id":1,"view_order_url":"http:\/\/woocommerce-5468-12693-128023.cloudwaysapps.com\/my-account\/view-order\/19","line_items":[{"id":1,"subtotal":"1000.00","subtotal_tax":"0.00","total":"1000.00","total_tax":"0.00","price":"1000.00","quantity":1,"tax_class":null,"name":"Test Saree product","product_id":15,"sku":"","meta":[]}],"shipping_lines":[],"tax_lines":[],"fee_lines":[],"coupon_lines":[],"customer":{"id":1,"created_at":"2016-06-27T05:01:55Z","email":"info@resolutesolutions.in","first_name":"","last_name":"","username":"info@resolutesolutions.in","role":"administrator","last_order_id":"37","last_order_date":"2016-07-20T08:17:21Z","orders_count":3,"total_spent":"7300.00","avatar_url":"http:\/\/1.gravatar.com\/avatar\/?s=96","billing_address":{"first_name":"Rahul","last_name":"Patel","company":"Resolute Solutions","address_1":"surat","address_2":"","city":"Surat","state":"GJ","postcode":"395001","country":"IN","email":"info@resolutesolutions.in","phone":"9874563210"},"shipping_address":{"first_name":"","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"","postcode":"","country":""}}}]}

我能够将这些字符串转换为数据表,但我无法获取 json 字符串中的数组内的所有数据,数组内的数据 payment_details,billing_address,shipping_address,line_Items,shipping_lines,tax_lines,fee_lines,优惠券线,客户和客户内部的数组。谁能告诉我如何做到这一点。我需要 c# windows 应用程序的数据。我是这个 json 东西的新手,所以如果有任何问题,请随时编辑

  public static DataTable Tabulate(string json)
    {
        var jsonLinq = JObject.Parse(json);

        // Find the first array using Linq
        var srcArray = jsonLinq.Descendants().Where(d => d is JArray).First();
        var trgArray = new JArray();
        foreach (JObject row in srcArray.Children<JObject>())
        {
            var cleanRow = new JObject();
            foreach (JProperty column in row.Properties())
            {
                // Only include JValue types
                if (column.Value is JValue)
                {
                    cleanRow.Add(column.Name, column.Value);
                }
            }

            trgArray.Add(cleanRow);
        }

        return JsonConvert.DeserializeObject<DataTable>(trgArray.ToString());
    }

这是我在网上找到的代码,我用它来将 json 转换为数据表

【问题讨论】:

  • 问题在于您的 JSON 嵌套了 对象 而不是嵌套的 对象数组,例如:[{"id":41,"nested_object":{"name":"HARSH"}}] 而不是 [{"id":41,"nested_array":[{"name":"HARSH"}]}]。嵌套数组可以转换为嵌套的DataTable,但没有代表嵌套对象的规范方法。你想在那里做什么?
  • 所以如果我想将 json 转换为数据表,我需要有嵌套数组形式的 json?我可以将此 json 转换为嵌套数组吗? @dbc

标签: c# json datatable woocommerce


【解决方案1】:

Json.NET 有一个内置的DataTableConverter。因此,您可以通过

JArray 转换为 DataTable
var table = trgArray.ToObject<DataTable>();

但是,您的 JSON 有两个问题导致此转换失败:

  1. 您的某些对象具有空数组属性,例如:

    "meta": []
    

    由于某种原因(可能是错误?),这些会混淆转换器,导致它抛出异常。但是,由于它们是空的,因此可以删除并忽略它们:

    public static void RemoveEmptyArrayProperties(JContainer root)
    {
        var query = root.DescendantsAndSelf()
            .OfType<JProperty>()
            .Where(p => p.Value is JArray && ((JArray)p.Value).Count == 0);
        foreach (var property in query.ToList())
        {
            property.Remove();
        }
    }
    
  2. 它有嵌套在对象中的对象。大大简化,您有以下内容:

    [
      {
        "id": 41,
        "customer": {
          "id": 2
        }
      }
    ]
    

    不幸的是,没有规范的方法可以将此对象层次结构转换为DataTable。可以将数据表相互嵌套,但是这通常映射到嵌套的 JSON array 而不是嵌套的 object。您在 cmets 中编写了 我需要在 SQL Server 中插入该数据。那么,您希望如何在数据库中对这些数据进行建模?

    一种可能性是将嵌套对象转换为对象的嵌套数组。完成此操作后,将可以进行自动转换。但是,现在看来,您的每个 order 对象都可以有多个(例如)客户,而事实并非如此。如果满意,则可以使用以下方法:

    public static void ConvertObjectPropertiesToArrays(JContainer root)
    {
        var query = root.DescendantsAndSelf()
            .OfType<JProperty>()
            .Where(p => p.Parent is JObject && p.Value is JObject);
        foreach (var property in query.ToList())
        {
            var value = property.Value;
            var array = new JArray();
            property.Value = array;
            array.Add(value);
        }
    }
    

    它产生以下 JSON:

    [
      {
        "id": 41,
        "customer": [
          {
            "id": 2
          }
        ]
      }
    ]
    

    或者,您可以通过将嵌套对象的属性冒泡到其父对象来展平嵌套对象。以下方法可以做到这一点:

    public static void FlattenObjectPropertiesToParents(JContainer root)
    {
        var query = root.DescendantsAndSelf()
            .OfType<JProperty>()
            .Where(p => p.Parent is JObject && p.Value is JObject)
            .ToList();
        for (int i = query.Count - 1; i >= 0; i--)
        {
            var property = query[i];
            var value = (JObject)property.Value;
            var parent = (JObject)property.Parent;
            property.Remove();
            foreach (var item in value.Properties().ToList())
            {
                item.Remove();
                parent.Add(string.Format("{0}.{1}", property.Name, item.Name), item.Value);
            }
        }
    }
    

    它生成以下 JSON,可以成功转换为 DataTable

    [
      {
        "id": 41,
        "customer.id": 2
      }
    ]
    

    请注意,“customer”对象的“id”属性已变为“customer.id”。

    作为第三种选择,您可以尝试将嵌套对象反序列化为Dictionary&lt;string, object&gt;——尽管我不知道 SQL Server 适配器是否可以处理这样的数据表。为此,您需要按照DateTime column type becomes String type after deserializing DataTable 的答案手动复制DataTableConverter.ReadJson() 的逻辑,并修改GetColumnDataType(JsonReader reader) 以返回typeof(Dictionary&lt;string, object&gt;)JsonToken.StartObject

因此您的Tabulate() 方法变为:

public static DataTable NestedTabulate(string json)
{
    // Find the first array using Linq
    var jsonLinq = (JContainer)JToken.Parse(json);
    var srcArray = jsonLinq.DescendantsAndSelf().OfType<JArray>().First();

    RemoveEmptyArrayProperties(srcArray);

    ConvertObjectPropertiesToArrays(srcArray);

    return srcArray.ToObject<DataTable>();
}

或者可能:

public static DataTable FlattenTabulate(string json)
{
    // Find the first array using Linq
    var jsonLinq = (JContainer)JToken.Parse(json);
    var srcArray = jsonLinq.DescendantsAndSelf().OfType<JArray>().First();

    RemoveEmptyArrayProperties(srcArray);

    FlattenObjectPropertiesToParents(srcArray);

    return srcArray.ToObject<DataTable>();
}

【讨论】:

  • 感谢@dbc 的帮助,您的这种方法有效,我能够获取数据表中的所有数据,非常感谢您的指导和支持
  • 我注意到 LineItems 数组中的数据在我使用您的 FlattenTabluate() 函数获得的数据表中丢失了,请再次帮助我。其他所有数据都可用,只有 Lineitems 部分中的一个没有得到@dbc
  • @Harshkantharia - "line_items" 是嵌套对象数组,而不是嵌套对象。它们被 Json.NET 成功反序列化为嵌套的DataTable。如果您在返回的DataTable 上执行Debug.WriteLine(JsonConvert.SerializeObject(dt, Formatting.Indented)),您将看到它们。如果它们没有被插入到您的数据库中,那一定是因为您是如何进行插入的。由于这里的首选格式是one question per post,我建议您问第二个问题,关于插入失败的原因。
  • 感谢您的帮助 @dbc 我已经设法完成了订单项的工作,我还创建了另一种方法来做到这一点
【解决方案2】:

由于您的字符串太长,我使用较短的字符串(取自您的),这样更容易跟踪并为您提供线索。

首先使用 Nuget 包管理安装 Json.NET(这不是唯一的选择,但它是最好的选择之一)。然后,您可以轻松地解析字符串。我想下面的 sn-ps 会给你一些想法。

using System;
using Newtonsoft.Json.Converters;

namespace Test
{
    class JsonParser
    {
        public static void Main(string[] args)
        {
            string jsonStr = @"{'orders':[
                            {'id':41,
                            'billing_address':{'first_name':'HARSH','last_name':'KANTHARIA','company':'ITACHI GROUP','address_1':'20 dhanlaxmi bunglows','address_2':'nr nakshatra appartment,pal','city':'surat','state':'GJ','postcode':'395009','country':'IN','email':'harsh@resolutesolutions.in','phone':'9723638788'},
                            }]}";
            dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonStr);
            Console.WriteLine(data.orders[0].billing_address.first_name);
            Console.Read();
        }        
}

【讨论】:

  • 这确实为我提供了数据,但我需要数据表或数据集中的数据,因为我需要在 SQL Server 中插入该数据
猜你喜欢
  • 2019-01-26
  • 1970-01-01
  • 2017-02-26
  • 2015-01-27
  • 1970-01-01
  • 2018-04-05
  • 2010-10-21
  • 2023-04-01
  • 2012-06-10
相关资源
最近更新 更多