问题标签 [json2csv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2100 浏览

node.js - 当我创建 CSV 文件时,标题值在每一行中重复

我正在尝试创建一个 CSV。由于数据很大,我想继续将数据附加到文件中,而不是先将记录存储在数组中,然后将所有数据一次转储到 CSV 中。所以我写了下面的代码,模拟我想做的事情。每秒创建 50 条随机记录并将其附加到文件中。代码工作正常,但问题是最终的 CSV。它如下所示:

我不明白这是为什么。我还阅读了相关的SO 帖子,但这也无济于事。

我错过了什么?最初,代码检查文件是否已经存在。如果没有,则创建仅包含标题的文件,然后进行常规写入过程。我尝试删除仅写入标题的部分。它有助于删除顶部的重复标题,但无助于每行中标题的重复。怎么能防止呢?

0 投票
1 回答
70 浏览

python - 将数组转换为 CSV,包括多行图像

我正在将数组转换为 csv,以便我可以将项目快速导入 Shopify。根据 Shopify,您必须执行以下操作才能在导入时添加多个图像:

  1. 插入新行(每张图片一个)。
  2. 复制+粘贴“句柄”。
  3. 复制 + 粘贴图像 URL。

因此,第一张图像位于第一行,所有后续图像都位于下面的行中。示例 CSV 位于此处:https ://help.shopify.com/csv/product_template.csv

因此,我想编写一些将循环遍历数组的东西,该数组如下所示(除了明显更长),并将其转换为 CSV,将除第一张之外的所有照片放入新行。

我通常用json2csv做这种事情,看起来像下面这样,只是我不确定如何处理多行方面。

Python 也可能是一个不错的选择,就像这篇文章一样,但多行方面再次令人困惑:

CSV 的输出行顶部如下(必须“运行片段”才能以表格形式查看) - 请注意,我不是在尝试创建 HTML 表格:

0 投票
1 回答
590 浏览

javascript - 如何将 JSON(从 google-trends-api)转换为 CSV?

我一直在尝试使用来自 npmjs.com 的 javascript google-trends-api 来自动检索搜索趋势数据。我成功地从我的查询中获取了原始 JSON 输出,但我似乎无法成功地将它们解析为一种形式——最好是 CSV 或制表符分隔的文本——我可以将其导入其他软件 (Stata) 进行分析. 我已经尝试使用 json2csv 来解析结果,但这不会返回类似于电子表格样式文件的任何内容。

以下是一些代表性查询结果的示例(长度有所删减):

"{\"默认\":{\"geoMapData\":[{\"geoCode\":\"798\",\"geoName\":\"Glendive MT\",\"值\":[100 ],\"formattedValue\":[\"100\"],\"maxValueIndex\":0,\"hasData\":[true]},{\"geoCode\":\"552\",\" geoName\":\"Presque Isle ME\",\"value\":[49],\"formattedValue\":[\"49\"],\"maxValueIndex\":0,\"hasData\": [true]},{\"geoCode\":\"710\",\"geoName\":\"Hattiesburg-Laurel MS\",\"value\":[11],\"formattedValue\":[ \"11\"],\"maxValueIndex\":0,\"hasData\":[true]},{\"geoCode\":\"766\",\"geoName\":\"Helena MT\ ",\"值\":[0],\"formattedValue\":[\"\"],\"maxValueIndex\":0,\"hasData\":[false]}]}}"

在运行json2csv -i "results.json"并使用fs.outputJson保存输出时,除非我去掉最外层的引号和所有反斜杠,否则会出现错误。但即使这样做了,这就是我得到的回报:

"default.geoMapData" "[{""geoCode"":""798"",""geoName"":""Glendive MT"",""value"":[100],""formattedValue"":[ ""100""],""maxValueIndex"":0,""hasData"":[true]},{""geoCode"":""552"",""geoName"":""Presque Isle ME "",""value"":[49],""formattedValue"":[""49""],""maxValueIndex"":0,""hasData"":[true]},{""geoCode "":""710"",""geoName"":""哈蒂斯堡-劳雷尔 MS"",""值"":[11],""formattedValue"":[""11""],""maxValueIndex"":0,""hasData"":[true]},{""geoCode"":""766"",""geoName"": ""Helena MT"",""value"":[0],""formattedValue"":[""""],""maxValueIndex"":0,""hasData"":[false]}]""hasData"":[假]}]""hasData"":[假]}]"

对于如何将我的查询输出转换为合理的 CSV(或类似文件)的任何指导,我将不胜感激。我应该补充一点,我是这个东西的完整初学者,如果答案很明显,请道歉!

埃里克

0 投票
1 回答
2697 浏览

javascript - 错误:数据不应为空或应包含“字段”选项

我有一些看起来像这样的代码

当我到达.on('error', e => next('json2csv error: ${e}'))

这个过程并没有落入catch,它只是继续保持下去。我猜这是因为它被包裹在一个next

我终于能够提取的错误是:

Error: Data should not be empty or the "fields" option should be included

我试图挖掘节点模块中的源代码,但这对我来说意义不大。

我想我有两种可能的解决方案:要么我需要了解错误的Json2csv含义,要么我需要能够退出并关闭我的流。我试图只是推return res.status(400).json({ message: msg('fileRetrievalError', -3) })入回调.on('error;),但如果进程失败一次,它每次都会失败,直到会话结束,即使提供所有有效信息 - 如果这有意义..

我对节点知之甚少,而且这个包没有太多的支持。

0 投票
0 回答
63 浏览

javascript - Json2csv 将标签表拆分为多行

我有这样的数据:

如何使用 Json2Csv.Parser 在标签中创建具有多行的表?

https://i.stack.imgur.com/zsgsz.png

0 投票
1 回答
187 浏览

javascript - 嵌套 Object.keys forEach 循环和构建合并 JSON 对象数组的问题

我有两个 CSV 文件,一个带有路由步骤,一个带有 id 列表。我需要将每个 id 添加到每个路由步骤的开头。我正在使用 Node.js。

console.log(comboObj) 的输出是我想要的。但是,当我将其放入数组时,我只会一遍又一遍地获得路由步骤 CSV 中的最后一个条目。如果我直接在创建 comboObj 的位置使用流编写它,它主要工作。如果我这样做,我首先将对象转换为 CSV,输出让我在每一行的末尾都有重复的标题。它将 JSON 对象数组更清晰地写入 CSV。

因此,我试图将所有组合对象放在一个数组中,以便我可以将其全部转换为 CSV 并将其写入文件。谁能告诉我我的方法出了什么问题?

0 投票
1 回答
790 浏览

node.js - 如何使用来自mongodb的nodejs下载超过500k记录的整个集合作为csv?

我已经尝试过使用名为 json2csv 的 npm 包。对于最多 75 000 条记录,它工作正常。当数据超过该数据时,我没有从回调函数 exporttocsv 得到任何响应,如下所示。

将数据导出到 csv 时是否有任何限制?或者如何通过任何其他替代方案来实现这一目标?

0 投票
0 回答
48 浏览

javascript - 节点流 - 推送读取无意中分成 3 个写入流

目标:对象将被推送到可读流,然后根据它们来自的渠道(电子邮件、推送、应用内)保存在单独的 .csv 中。

问题:我无法将流分离到不同的 .pipe() “行”中,因此所有 .csv 日志仅接收其通道特定的事件对象。但在当前迭代中,由 Writestream 创建的所有 .csv 文件都从所有通道接收事件对象。

问题: 我可以在 setup() 函数中以编程方式动态创建多通道“pipe() 线”,还是我目前的处理方式正确?

手动创建“pipe() 行”是所有 .csv 都填充事件的原因吗?这可以通过一条“管道()线”和动态路由来解决吗?

以下代码的简要说明:

setup()调用makeStreams() - 创建一个具有 Readable 和 Writable 的对象(旋转文件系统 Writable 流)(setup() 现在是一个不必要的函数,但稍后会执行更多设置任务。)

当入站事件发生时调用pushStream()并推送如下对象:{Email: {queryParam:1, queryParam:2, etc.}} 事件按最高级别的 obj 排序(在本例中为“Email”)和然后被推送到正确的可写流,理论上应该移植到正确的可写流。不幸的是,情况并非如此,它将事件对象发送到所有可写流。如何仅将其发送到正确的流?

代码

0 投票
1 回答
290 浏览

javascript - 从 Osmosis 函数内部将 json 对象写入 csv

我正在使用 node.js 工具 Osmosis 将一堆数据作为 json 对象数组提取

Osmosis函数的本质似乎是数组只存在于函数的范围内,所以我需要在函数停止运行并处理json文件之前将文件写入函数内部。

这是我的代码提取数据:

然后如何将result[]json 对象数组写入磁盘上的 csv?或者甚至只是一个我可以使用 CLT 转换的 json 文件?任何将 json 数组写入磁盘的方法都足够了。

0 投票
2 回答
399 浏览

python - 从文件夹中读取 JSON 文件并将其存储到 CSV 文件中

我在一个文件夹中有大约 1000 个 JSON 文件,我想将所有这些文件转换为其 CSV 格式。JSON 文件的示例如下所示。