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

标签 javascript xml node.js

{
    "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数据转为键值可访问的对象,然后访问meta , homeoffice ,如下:

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]);
}

从这里您可以构建您的CREATE TABLEINSERT SQL 语句,以列名和值作为参数,使用合适的 node.js SQL Server 的库,例如 this .

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

关于javascript - 如何从json对象中获取特定的键和值存储在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889660/

相关文章:

javascript - 我的条件检查在 JS 中无法正常工作

sql-server - Node.JS 路由器返回 ERR_EMPTY_RESPONSE 页面错误

node.js - 在子数组上使用 "where"和 "in"时出现 Sequelize 错误

mysql - 如何使用 node.js 在 mySQL 中进行批量插入

javascript - 在 select2 中标记新标签?

php - jQuery 事件目标元素属性检索

javascript - 如何使用PhoneFormat.js检查输入的手机是固定电话还是手机?

java - SAX:XML 文档结构必须在同一实体内开始和结束

javascript - 如何从 jQuery(跨浏览器)返回的 XMLDocument 中获取整个 XML 字符串?

xml - 将选项卡式文本转换为 Perl 数据格式