将JSON对象插入数据库

时间:2013-10-12 23:06:04

标签: asp.net sql json

嗨我有一组格式低于标准的记录(项目ID不是“key”格式:“value”,它包含数千条记录)

{
   "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?

更新

我尝试用.net进行反序列化。但我没有得到ItemID,因为它不是这种格式“key”:“value”

2 个答案:

答案 0 :(得分:0)

您有几种选择。

  1. 将json反序列化为.Net Objects,然后插入DB。
  2. 为了写一个例子,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

答案 1 :(得分:0)

如果你能将你的json变成以下格式,那么在使用json.net库时,事情会更容易一些:

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

您需要一个c#类,如下所示:

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

最后,您可以调用以下方法来获取数组:

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