-1

嗨,我有一组具有以下格式的记录(项目 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”

4

2 回答 2

0

你有几个选择。

  1. 将 json 反序列化为 .Net 对象,然后插入 DB。

为了编写示例, 我使用了 JSON.NET 库。

 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 字符串的存储过程。在存储过程中,将其转换为表,并插入到数据库中。

    示例如何将 json 字符串转换为表格

于 2013-10-13T02:19:11.160 回答
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; }
}

最后可以调用下面的方法来获取数组:

var arr = JsonConvert.DeserializeObject<List<ItemDetail>>(json)
于 2013-10-13T02:57:20.360 回答