问题标签 [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.
python - 有没有办法分段读取 JSON 文件?
我正在尝试从Web读取一些JSON文件并使用这些数据创建一个SQL数据库。我正在使用ijson将数据作为流读取。但是当代码失败时,我需要重新开始检索数据。有没有办法从程序失败的地方继续读取 JSON 文件?
我可以使用 json.loads 读取整个文档,但我假设数据太大而无法一次读取。
你可以在下面看到我的代码。
python - 在 ijson 中找不到对象成员
完整的json;https://api.trendyol.com/webbrowsinggw/api/review/31515569 我需要产品评论下的“totalPages”元素,但我不能。没有错误消息只是冻结。我可以访问 result > productReviews > content > 0 > comment 。或其他。相同的代码无法访问 totalPages。这是我的访问评论代码;
我正在使用此代码访问 totalPages;
python - 使用 ijson.items 将十进制转换为浮点数
我正在从带有 的文件中读取大量 JSONS ijson.items
,但数字被转换为十进制类型。
例子Decimal('14.2')
文档说有一个选项use-float = true
。但我不知道在哪里放置这个选项。
是否可以使用ijson.items
和获取浮点数?
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 非常不熟悉,因此任何一般性提示/说明也会很棒。
感谢您阅读小说,即使您没有答案!
蒂姆
python - 如何从我的 json 数据集中提取列?
我的 jsons 看起来像{"metadata"}
,但它总是将我返回为[]
空,但我想正确提取密钥
python - 绕过内存错误以在 Python 中读取大型 JSON 文件
我正在使用下面的代码将几个 JSON 文件转换为 CSV,一切都按预期工作。但是,当我尝试转换更大的 JSON 文件(范围为 2-4+ GB)时,它会给出一个MemoryError
.
当前代码
在网上寻找类似问题后,我似乎可以利用ijson
它将逐行解析大型 JSON 文件而不是整个文件。您还将在我的代码中看到,我只提取某些 JSON 键以转换为 CSV ( created
, emails
, identities
)。
我不确定实现它的最佳方式,但我认为在我的代码开头会这样:
我无法共享我正在使用的完整 JSON 文件,因为它包含敏感信息。但是您可以使用下面的示例数据进行测试。这只是一张唱片,但我想向您展示我正在使用的布局。
JSON 示例
预期结果
因此,我希望在更大的 JSON 文件上运行我的工作代码,而不会崩溃并给我一个MemoryError
.
ijson - ijson.common.IncompleteJSONError:词法错误:json 文本中的无效字符
大家好 ijson 新手我有一个非常大的 .json 文件 168 (GB) 我想获取所有可能的键,但在文件中一些值被写为 NaN。ijson 在我的代码值中创建一个生成器并输出字典。返回特定项目时,它会引发错误。如何获取字符串而不是字典而不是值?试过**parser = ijson.items (input_file, '', multiple_values = True, map_type = str) **,没有帮助。
python - 使用 ijson 读取和解析 JSON
我有一些具有以下结构的大 json 文件:
但是用默认的 pythonjson
库序列化这个大的 JSON 最终会消耗太多的内存,所以我已经搜索了其他替代方案。其中之一ijson
是应该只消耗与文件大小本身相同的内存量。
问题是,我不知道如何使用它(从 java 的角度来看,我是 python 的新手)而且我发现的大多数教程都没有像上面那样解析 json。如何使dictionaries
json 列表中的每个项目的 ijson 产生?
提前致谢。
python - 将 3.7GB 的大型 json 文件加载到数据帧中,并使用 ijson 转换为 csv 文件
我有一个 3.7gb 的大型 json 数据文件。我要将json文件加载到数据框并删除未使用的列,而不是将其转换为csv并加载到sql。ram 是 40gb 我的 json 文件结构
我尝试加载数据,但由于内存不足而失败
它显示错误
我尝试另一种方式
导入 json fb_data={} i=1
然后我从csv转换为sql,它仍然显示错误“MemoryError:”
谢谢阅读
python - 在编写时在 JSON 对象之间添加逗号,
我正在使用 IJSON 解析一个非常大的 JSON 文件,然后将内容写入临时文件。之后,我用临时文件的内容覆盖原始文件。
我的问题是我最终编写的 JSON 对象之间没有逗号。我无法再次解析文件并添加缺少的逗号,因为它需要的时间太长。理想情况下,在编写时,我可以在每个 json.dump() 的末尾添加一个逗号。但是,我将如何处理最终条目?
确定生成器函数何时到达文件末尾的某种方法?然后我会使用一个标志或传递一个变量,这样它就不会写出最后的逗号。
或者,我可以使用 file.seek() 转到最后一个字符之前的字符并将其删除。但这听起来不太好。
我将不胜感激任何建议,谢谢。