【发布时间】:2021-08-10 19:51:03
【问题描述】:
我有一个文件,其中包含我需要解析并存储在数据库中的数据。下面是文件中 2 个条目的示例。我不太确定结构是什么(尽管它看起来是 ndJSON)。我正在尝试将数据解析为 JSON 对象,以便将其存储在数据库中,但似乎无法弄清楚。这是我到目前为止所拥有的
var ndjson = {
"sequence-num": "0123456789",
"version": "N1.4",
"record-type": "R",
"session-id": "197-30760303",
"date": "2021-07-23 15:00:53",
"passport-header": { "alg": "ES256", "ppt": "test", "typ": "passport", "x5u": "https://cr.com" },
"passport-payload": { "attest": "A", "dest": { "tn": ["0123456789"] }, "iat": 0123456789, "orig": { "tn": "0123456789" }, "origid": "c699f78a-ebc6-11eb-bfd8-bec0bbc98888" },
"identity-header": "eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9jci5zYW5zYXkuY29tL1RvdWNodG9uZV82ODNBIn0.eyJhdHRlc3QiOiJCIiwiZGVzdCI6eyJ0biI6WyIxMjUeyJhdHRlc3QiOiJCIiwiZGVzdCI6eyJ0biI6WyIxMj;info=<https://google.com/>;alg=ES256;ppt=\"test\""
}
{
"sequence-num": "0123456788",
"version": "N1.4",
"record-type": "R",
"session-id": "214-30760304",
"date": "2021-07-23 15:00:53",
"passport-header": { "alg": "ES256", "ppt": "test", "typ": "passport", "x5u": "https://cr.com" },
"passport-payload": { "attest": "B", "dest": { "tn": ["0123456788"] }, "iat": 0123456788, "orig": { "tn": "0123456788" }, "origid": "c69d0588-ebc6-11eb-bfd8-bec0bbc98888" },
"identity-header": "eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9jci5zYW5zYXkuY29tL1RvdWNodG9uZV82ODNBIn0.eyJhdHRlc3QiOiJCIiwiZGVzdCI6eyJ0biI6WyIxMjUeyJhdHRlc3QiOiJCIiwiZGVzdCI6eyJ0biI6WyIxMj;info=<https://google.com/>;alg=ES256;ppt=\"test\""
};
let result = ndjson.split(',').map(s => JSON.parse(s));
console.log('The resulting array of items:');
console.log(result);
console.log('Each item at a time:');
for (o of result) {
console.log("item:", o);
}
当我运行它时,我在"sequence-num": "0123456788", 的第二个节点的第 12 行收到 Uncaught SyntaxError: Unexpected token ':' 错误。
感谢您的帮助,谢谢!
【问题讨论】:
-
ndjson应该是一个数组吗?如果是这样,则您缺少[和]以及中间的,。 -
实际文件是否包含有效的 JSON?因为那是彼此后面的两个对象,中间没有逗号,也没有方括号包围它们。在这一点上,这只是一个 JavaScript 语法错误。 如果实际的
ndjson是一个有效的数组,则无需拆分或解析任何内容:jsfiddle.net/bo2h1684 -
在数据库中存储对象可以通过使用 noSQL 数据库或将对象转换为字符串并将其存储在文本列中来完成(使用
JSON.stringify(some_obj)) -
@crashmstr 我不确定 ndjson 是否应该有括号。这是发送给我的数据,我需要通过在每个对象之间添加逗号并在整个对象周围添加括号来将其解析为 JSON 格式。
-
@ChrisG 这是在文件中发送给我的确切数据。我认为它不是有效的 JSON。
标签: javascript parsing