问题标签 [ijson]

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 投票
0 回答
86 浏览

python - 有没有办法分段读取 JSON 文件?

我正在尝试从Web读取一些JSON文件并使用这些数据创建一个SQL数据库。我正在使用ijson将数据作为流读取。但是当代码失败时,我需要重新开始检索数据。有没有办法从程序失败的地方继续读取 JSON 文件?

我可以使用 json.loads 读取整个文档,但我假设数据太大而无法一次读取。

你可以在下面看到我的代码。

0 投票
2 回答
54 浏览

python - 在 ijson 中找不到对象成员

json树

完整的json;https://api.trendyol.com/webbrowsinggw/api/review/31515569 我需要产品评论下的“totalPages”元素,但我不能。没有错误消息只是冻结。我可以访问 result > productReviews > content > 0 > comment 。或其他。相同的代码无法访问 totalPages。这是我的访问评论代码;

我正在使用此代码访问 totalPages;

0 投票
1 回答
278 浏览

python - 使用 ijson.items 将十进制转换为浮点数

我正在从带有 的文件中读取大量 JSONS ijson.items,但数字被转换为十进制类型。

例子Decimal('14.2')

文档说有一个选项use-float = true。但我不知道在哪里放置这个选项。

是否可以使用ijson.items和获取浮点数?

0 投票
2 回答
3533 浏览

json - 使用 ijson.parse() 和 ijson.items() 加载一个大的 JSON 文件 - 为什么这样会起作用?

我正在尝试加载对于json.load. 我花了一段时间研究了ijson许多堆栈溢出帖子,并使用了以下代码,大部分是从https://stackoverflow.com/a/58148422/11357695窃取的:

我的 JSON 文件作为 dict 读入,有 6 个键,其中一个是'records'. 上述函数仅复制此'records'键值的内容。我对此进行了更多研究,并得出ijson.items使用前缀 ( 'records.item') 的结论。所以它只是复制这个键的值也就不足为奇了。但我想得到一切。

为了实现这一点,我查看了 usingijson.parse来给出前缀列表。当我将parser下面奇怪的生成器对象生成的所有前缀输入到ijson.items()使用迭代循环中时,我MemoryError很快就从json.items()语句中得到了一个。我还获得IncompleteJSONError了代码的早期迭代,当前版本没有出现。但是,如果我删除该except ijson.IncompleteJSONError语句,我会得到Memory Error

我尝试了如果我只搜索没有 的前缀会发生什么'record',看看这是否至少会给我字典的其余部分。但是,它实际上工作得很好,并创建了一个列表,其第一个对象与生成的对象相同json.load(在这种情况下它工作,因为我使用一个小文件来测试代码):

测试时:

这很好,但它强调我并不真正了解发生了什么 - 为什么records该函数需要前缀extract_json(我尝试了 json 字典中的其他键,没有命中)但适得其反loadBigJson?是什么生成了错误语句,为什么except IncompleteJSONError语句会阻止MemoryError

如您所知,我对使用 JSON 非常不熟悉,因此任何一般性提示/说明也会很棒。

感谢您阅读小说,即使您没有答案!
蒂姆

0 投票
0 回答
28 浏览

python - 如何从我的 json 数据集中提取列?

我的 jsons 看起来像{"metadata"},但它总是将我返回为[]空,但我想正确提取密钥

0 投票
1 回答
764 浏览

python - 绕过内存错误以在 Python 中读取大型 JSON 文件

我正在使用下面的代码将几个 JSON 文件转换为 CSV,一切都按预期工作。但是,当我尝试转换更大的 JSON 文件(范围为 2-4+ GB)时,它会给出一个MemoryError.

当前代码

在网上寻找类似问题后,我似乎可以利用ijson它将逐行解析大型 JSON 文件而不是整个文件。您还将在我的代码中看到,我只提取某些 JSON 键以转换为 CSV ( created, emails, identities)。

我不确定实现它的最佳方式,但我认为在我的代码开头会这样:

我无法共享我正在使用的完整 JSON 文件,因为它包含敏感信息。但是您可以使用下面的示例数据进行测试。这只是一张唱片,但我想向您展示我正在使用的布局。

JSON 示例

预期结果

因此,我希望在更大的 JSON 文件上运行我的工作代码,而不会崩溃并给我一个MemoryError.

0 投票
1 回答
562 浏览

ijson - ijson.common.IncompleteJSONError:词法错误:json 文本中的无效字符

大家好 ijson 新手我有一个非常大的 .json 文件 168 (GB) 我想获取所有可能的键,但在文件中一些值被写为 NaN。ijson 在我的代码值中创建一个生成器并输出字典。返回特定项目时,它会引发错误。如何获取字符串而不是字典而不是值?试过**parser = ijson.items (input_file, '', multiple_values = True, map_type = str) **,没有帮助。

0 投票
0 回答
33 浏览

python - 使用 ijson 读取和解析 JSON

我有一些具有以下结构的大 json 文件:

但是用默认的 pythonjson库序列化这个大的 JSON 最终会消耗太多的内存,所以我已经搜索了其他替代方案。其中之一ijson是应该只消耗与文件大小本身相同的内存量。

问题是,我不知道如何使用它(从 java 的角度来看,我是 python 的新手)而且我发现的大多数教程都没有像上面那样解析 json。如何使dictionariesjson 列表中的每个项目的 ijson 产生?

提前致谢。

0 投票
1 回答
614 浏览

python - 将 3.7GB 的大型 json 文件加载到数据帧中,并使用 ijson 转换为 csv 文件

我有一个 3.7gb 的大型 json 数据文件。我要将json文件加载到数据框并删除未使用的列,而不是将其转换为csv并加载到sql。ram 是 40gb 我的 json 文件结构

我尝试加载数据,但由于内存不足而失败

它显示错误

我尝试另一种方式

导入 json fb_data={} i=1

然后我从csv转换为sql,它仍然显示错误“MemoryError:”

谢谢阅读

0 投票
2 回答
87 浏览

python - 在编写时在 JSON 对象之间添加逗号,

我正在使用 IJSON 解析一个非常大的 JSON 文件,然后将内容写入临时文件。之后,我用临时文件的内容覆盖原始文件。

我的问题是我最终编写的 JSON 对象之间没有逗号。我无法再次解析文件并添加缺少的逗号,因为它需要的时间太长。理想情况下,在编写时,我可以在每个 json.dump() 的末尾添加一个逗号。但是,我将如何处理最终条目?

确定生成器函数何时到达文件末尾的某种方法?然后我会使用一个标志或传递一个变量,这样它就不会写出最后的逗号。

或者,我可以使用 file.seek() 转到最后一个字符之前的字符并将其删除。但这听起来不太好。

我将不胜感激任何建议,谢谢。