如何从 json 对象获取特定的键和值以存储在数据库中

How to get particular key and value from json object to store in database?

本文关键字:键和值 存储 数据库 json 对象 获取      更新时间:2023-09-26
{
    "purchaseorder": {
        "Meta": [{
            "InterchangeControlNumber": ["000004010"],
            "GroupControlNumber": ["833"],
            "DocumentControlNumber": ["5952"],
            "InterchangeSenderID": ["009483355"],
            "InterchangeReceiverID": ["076627454"],
            "GroupSenderID": ["009483355"],
            "GroupReceiverID": ["076627454"]
        }],
        "header": [{
            "address": [{
                "home": [{
                    "hno": ["134/123"],
                    "contact": ["898944343"],
                    "pin": ["272272"],
                    "district": ["telangana"]
                }],
                "office": [{
                    "hno": ["456/789"],
                    "contact": ["440838272"],
                    "pin": ["55833"],
                    "district": ["delhi"]
                }]
            }]
        }]
    }
}

我有像上面这样的 JSON 数据。

我想将其存储在数据库中作为元,家庭和办公室作为表名,各自的键作为列,值作为单元格数据。

如何从 node.js 或 JavaScript 中的 JSON 获取数据?

JSON 数据可以是任何东西。我可以传递要创建的所需表的名称,它应该是自动化的。

怕我对SQL Server了解不多,但希望这应该能让你在Javascript方面走上正确的道路。

将 JSON 转换为 JavaScript 对象

您可以将 JSON 数据转换为键值可访问对象,然后访问 metahomeoffice ,如下所示:

var data = JSON.parse(jsonData);
var meta = data.purchaseorder.Meta[0];
var home = data.purchaseorder.header[0].address[0].home[0];
var office = data.purchaseorder.header[0].address[0].office[0];

然后要提取特定值,您可以这样做,例如:

var homeContact = home.contact; // Will return "898944343".

检索列名

如果如您所说,数据可以更改,则可以派生列名的一种方法是:

var metaColumns = Object.keys(meta);
var homeColumns = Object.keys(home);
var officeColumns = Object.keys(office);

注意:Javascript 对象不一定保留属性排序,因此这些列的顺序可能与它们在数据中的显示顺序不同。

创建表并插入数据

为此

,您可以将相应的列名和值数组放在一起:

var allColumns = metaColumns + homeColumns + officeColumns;
var allValues = [];
for (let col of metaColumns) {
    allValues.push(meta[col]);
}
for (let col of homeColumns) {
    allValues.push(home[col]);
}
for (let col of officeColumns) {
    allValues.push(office[col]);
}

从这里,您可以使用适用于 SQL Server 的node.js库(如下所示)构建CREATE TABLEINSERT SQL 语句,并将列名和值作为参数。

请注意,如果此数据来自不受信任的来源,则应确保对其进行正确清理,以防止SQL注入的可能性。