2016-07-22 4 views
0
{"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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","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":"[email protected]","phone":""},"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":"[email protected]","first_name":"","last_name":"","username":"[email protected]","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":"[email protected]","phone":""},"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":"[email protected]","phone":""},"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":"[email protected]","first_name":"","last_name":"","username":"[email protected]","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":"[email protected]","phone":""},"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":"[email protected]","phone":""},"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":"[email protected]","first_name":"","last_name":"","username":"[email protected]","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":"[email protected]","phone":""},"shipping_address":{"first_name":"","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"","postcode":"","country":""}}}]} 

Я могу преобразовать эти строки в DataTable, но я не в состоянии получить все данные, которые внутри массивов в строке JSON, данные внутри массивов payment_details, billing_address, shipping_address, line_Items, shipping_lines, tax_lines, fee_lines, coupon_lines, клиент и массивы внутри клиента. может ли кто-нибудь показать мне метод, как это сделать. Мне нужны эти данные для приложения windows C#. Я новичок в этом JSon вещи, так что если есть какие-либо изменения в вопросе не стесняйтесь редактироватьWoo коммерция JSON в Dataset или DataTable

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 в DataTable

+0

Пожалуйста, поделитесь ** C# код ** вы пробовали уже, что не работает. Из https://stackoverflow.com/help/how-to-ask: * Помогите другим воспроизвести проблему ... Включите достаточно кода, чтобы другие могли воспроизвести проблему. * Также вы можете упростить JSON для создания [ mcve] вашей проблемы? – dbc

+0

Я редактировал сообщение и вставил код C#, любезно посмотрю на него. я не могу просто использовать json-код, я тоже искал помощь в этом @dbc –

+0

Проблема заключается в том, что ваш JSON имеет вложенные * объекты *, а не вложенные массивы объектов *, например: '[{" id ": 41, "nested_object": {"name": "HARSH"}}] 'вместо' [{"id": 41, "nested_array": [{"name": "HARSH"}]}] '. Вложенный массив может быть преобразован во вложенный «DataTable», но нет канонического способа представления вложенного объекта. Что вы хотите сделать там? – dbc

ответ

0

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 , а не вложенный объект . В комментариях вы написали Мне нужно вставить эти данные в 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».

    В качестве третьего варианта вы можете попробовать десериализовать вложенные объекты как Dictionary<string, object> - хотя я не знаю, мог ли адаптер SQL Server обрабатывать такую ​​таблицу данных. Для этого вам необходимо вручную реплицировать логику DataTableConverter.ReadJson() по линиям ответа на DateTime column type becomes String type after deserializing DataTable и изменить GetColumnDataType(JsonReader reader) на возврат typeof(Dictionary<string, object>) для 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>(); 
} 
+0

Спасибо @dbc за вашу помощь, этот ваш метод работает, и я могу получить все данные в datatable большое спасибо за ваше руководство и поддержку –

+0

я заметил, что данные в массиве LineItems отсутствуют в datatable, которые я получаю, используя функцию FlattenTabluate(), вы можете помочь мне снова. Пожалуйста. все остальные данные доступны только в том, что в разделе Lineitems не получено @dbc –

+0

@Harshkantharia - '' line_items "' представляют собой вложенный массив объектов, а не вложенный объект. Они успешно десериализованы Json.NET как вложенные «DataTable». Если вы выполните 'Debug.WriteLine (JsonConvert.SerializeObject (dt, Formatting.Indented))' на возвращаемом 'DataTable', вы увидите их. Если они не вставлены в вашу базу данных, это должно быть из-за того, как вы делаете вставку. Поскольку предпочтительный формат здесь [один вопрос за сообщение] (https://meta.stackexchange.com/questions/222735), я предлагаю вам задать второй вопрос о том, почему вставка терпит неудачу. – dbc

0

Как ваш Строка слишком длинная Я использую более короткую строку (возьмите с себя), которую легче отслеживать и дать вам ключ.

Сначала установите Json.NET (это не единственный вариант, но он является одним из лучших), используя управление пакетами Nuget. Затем вы можете легко разобрать строку. Я предполагаю, что следующие фрагменты дают вам представление.

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':'[email protected]','phone':'9723638788'}, 
          }]}"; 
      dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonStr); 
      Console.WriteLine(data.orders[0].billing_address.first_name); 
      Console.Read(); 
     }   
} 
+0

ну, это дает мне данные, но мне нужны эти данные в datatable или dataset, так как мне нужно вставить эти данные в SQL Server. –

Смежные вопросы