gpt4 book ai didi

javascript - 在 NodeJS 中提取和解析巨大的不完整 JSON

转载 作者:行者123 更新时间:2023-12-05 05:37:30 27 4
gpt4 key购买 nike

想象一个场景,我在 Github gist 上有一个巨大的 JSON 文件。该 JSON 是一个对象数组,它有 30k+ 行。现在我想直接从 Github gist 到我的数据库执行 ETL(提取、转换、加载)这些数据。不幸的是,该 JSON 的最后一个对象不完整,我无法控制外部数据源。这意味着,在一个简单的演示中,我得到的数据是这样的:

[{ “名称”:{ “第一”: “foo”, “最后”: “酒吧” } },{ “名称”:{ “第一”: “ind”, “最后”:“去

什么是最佳实践,或者我如何提取如此巨大的 JSON 文件并在 NodeJs 中正确解析它?

我尝试使用常规 JSON.parse() 和名为 partial-json-parser 的 npm 包进行解析,但没有任何帮助。

编辑

我从外部来源找到了解决不完整 JSON 和 ETL 问题的解决方案。我在此处粘贴该片段:

import fetch from "node-fetch";
import StreamArray from "stream-json/streamers/StreamArray.js";

const main = async () => {
const invalidJSON = await fetch(
"<raw_gist_array_of_objects_api_endpoint>"
).then((r) => r.body);

const finalData = [];
const pipeline = invalidJSON.pipe(StreamArray.withParser());

pipeline.on("data", (data) => {
finalData.push(data.value);
});

await new Promise((r) => {
pipeline.on("end", r);
pipeline.on("error", r);
});

console.log(finalData);
};

main();

最佳答案

我认为您需要先修复 JSON 结构。试试这个方法:

import untruncateJson from "untruncate-json";

const str = `[{ "name": { "first": "foo", "last": "bar" } }, { "name": {
"first": "ind", "last": "go`;

const fixJson = untruncateJson.default;

const json = fixJson(str);

console.log(json);

关于javascript - 在 NodeJS 中提取和解析巨大的不完整 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73104627/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com