2013-10-12 5 views
0

Привет У меня есть набор записей с ниже формате (элемент ID не в «ключ» формат: «значение» и состоит тысячи записей)Вставить объект JSON в базу данных

{ 
    "items":[ 
    { 
     "20057":{ 
      "name":"Name 20057", 
      "item_name":"name_20057" 
     } 
    }, 
    { 
    "20060":{ 
     "name":"Name 20060", 
     "item_name":"name_20060" 
     } 
    } 
    ] 
} 

и я необходимо вставить их все в базу данных, как показано ниже:

ItemID | Name  | Item_Name 
---------------------------------- 
20057 | Name 20057 | name_20057 
20060 | Name 20060 | name_20060 

Есть ли способ сделать это с помощью SQL-запроса или ASP.NET?

UPDATE

Я пытался сделать это с .net и десериализации его. Но я не смог получить ItemID, поскольку он не находится в этом формате «ключ»: «значение»

+1

Я предлагаю сделать это с кодом .net. –

+0

Используйте JSON.Net, десериализуйте текст в класс/объекты и нажмите этот объект в базу данных. –

+0

Я согласен с тем, что Dan использует что-то вроде JSON.NET для Dapper, чтобы получить данные в БД. – jcwrequests

ответ

0

У вас есть несколько вариантов.

  1. Deserialize json в .Net Объекты, а затем вставить в DB.

Для того, чтобы написать пример, I used JSON.NET library.

private void TestJson() 
     { 
      string json = @"{'items':[ 
    { 
     '20057':{ 
      'name':'Name 20057', 
      'item_name':'name_20057' 
     } 
    }, 
    { 
    '20060':{ 
     'name':'Name 20060', 
     'item_name':'name_20060' 
     } 
    } 

    Newtonsoft.Json.Linq.JContainer jsonObj = (Newtonsoft.Json.Linq.JContainer)JsonConvert.DeserializeObject(json); 
} 

И чем вы можете перемещаться с помощью SelectToken или Path методы

  1. Создать магазин процедуру, которая будет получать JSON строку. В процедуре хранения, конвертируйте ее в таблицу и вставьте в БД.

    Example how to convert json string into table

+0

Я пытался сделать это с помощью .net и десериализовать его. но я не могу получить ItemID, поскольку он не находится в этом формате «key»: «value» – My2ndLovE

+0

Я обновил ответ –

0

Если бы вы могли получить JSON к ниже вещей формат будет немного легче, когда речь заходит об использовании Json.NET библиотеки:

[ 
    { 
     "ItemID": 20057, 
     "name": "Name 20057", 
     "item_name": "name_20057" 
    }, 
    { 
     "ItemID": 20060, 
     "name": "Name 20060", 
     "item_name": "name_20060" 
    } 
] 

Вам нужно aC# следующим образом:

public class ItemDetail 
{ 
    public string item_name { get; set; } 
    public int ItemID { get; set; } 
    public string name { get; set; } 
} 

Наконец, вы можете вызвать следующий метод для ge t массив:

var arr = JsonConvert.DeserializeObject<List<ItemDetail>>(json) 
+0

Я не могу изменить формат json, поскольку он состоит из тысяч записей. Или я могу его преобразовать в формат выше? – My2ndLovE

+0

Мы можем написать собственные преобразователи для работы с помощью библиотеки. Смотрите здесь: http://stackoverflow.com/a/8031283/145682 – deostroll

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