2013-10-12 33 views
0

嗨,我有一組記錄與以下格式(項目編號不在格式爲「關鍵」:「值」,它由記錄千元)插入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,因爲它不是以這種格式「key」:「value」

+1

我建議用.NET代碼這樣做。 –

+0

使用JSON.Net,將文本反序列化到類/對象並將該對象推送到數據庫 –

+0

我同意Dan使用類似JSON.NET的東西來將Dapper中的數據導入數據庫。 – jcwrequests

回答

0

有幾種選擇。

  1. 反序列化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或路徑方法

  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