我有一个千兆字节的JSON文件。该文件由每个不超过几千个字符的JSON对象组成,但是记录之间没有换行符。
使用Python 3和json
模块,如何一次将一个JSON对象从文件读入内存?
数据在纯文本文件中。这是类似记录的示例。实际记录包含许多嵌套的字典和列表。
以可读格式记录:
{
"results": {
"__metadata": {
"type": "DataServiceProviderDemo.Address"
},
"Street": "NE 228th",
"City": "Sammamish",
"State": "WA",
"ZipCode": "98074",
"Country": "USA"
}
}
}
实际格式。新记录一个接一个地开始,没有任何中断。
{"results": { "__metadata": {"type": "DataServiceProviderDemo.Address"},"Street": "NE 228th","City": "Sammamish","State": "WA","ZipCode": "98074","Country": "USA" } } }{"results": { "__metadata": {"type": "DataServiceProviderDemo.Address"},"Street": "NE 228th","City": "Sammamish","State": "WA","ZipCode": "98074","Country": "USA" } } }{"results": { "__metadata": {"type": "DataServiceProviderDemo.Address"},"Street": "NE 228th","City": "Sammamish","State": "WA","ZipCode": "98074","Country": "USA" } } }
一般而言,将多个JSON对象放入一个文件会使该文件 无效,JSON损坏
。也就是说,您仍然可以使用JSONDecoder.raw_decode()
method来解析数据。
当解析器找到它们时,以下将产生完整的对象:
from json import JSONDecoder
from functools import partial
def json_parse(fileobj, decoder=JSONDecoder(), buffersize=2048):
buffer = ''
for chunk in iter(partial(fileobj.read, buffersize), ''):
buffer += chunk
while buffer:
try:
result, index = decoder.raw_decode(buffer)
yield result
buffer = buffer[index:].lstrip()
except ValueError:
# Not enough data to decode, read more
break
该函数将从块中的给定文件对象中读取块buffersize
,并使decoder
对象从缓冲区解析整个JSON对象。每个解析的对象都交给调用者。
像这样使用它:
with open('yourfilename', 'r') as infh:
for data in json_parse(infh):
# process object
仅当您的JSON对象背对背写入文件且中间没有换行符时,才使用此选项。如果您 确实 有换行符,并且每个JSON对象都限于一行,那么您将拥有一个JSON
Lines文档
我有一个数千GB的JSON文件。该文件由JSON对象组成,每个对象不超过几千个字符,但记录之间没有换行符。 使用Python 3和json模块,如何一次从文件中读取一个json对象到内存中? 数据在纯文本文件中。这是一个类似记录的示例。实际记录包含许多嵌套字典和列表。 可读格式记录: 实际格式。新记录一个接一个地开始,没有任何中断。
在Java(任何库)中,从像下面这样的json开始(具有嵌套字段、数组和嵌入文档): 然后应用以下jsonpath(作为示例,理想情况下是任何类型的jsonpath) 创建如下所示的json文档: 所以问题是:使用jsonpath不仅可以获取数据,还可以获取所有嵌套字段,并创建一个新的json作为输入的子集? 任何例子都像往常一样受到赞赏 注意:在对此进行了大量思考之后,我得出的结论是,我需要的是
我相信我需要创建一个JsonReader对象并调用其中一个Json静态方法,但我在读取文件时遇到了问题。json。 创建读取器方法似乎要求输入是一个字符串。我应该继续尝试将我的整个JSON文件解释为字符串吗?
问题内容: 我是JSON格式的新手,在阅读的教程中,我不太了解如何使用php进行解析。所以我有这个: 我想回显 坐标 和 reverseGeocode 。谁能请我朝正确的方向前进? 问题答案: 尝试跑步 您的示例JSON作为字符串在哪里。
由于是一个对象,并且它有另一个对象,只能有字符串或数字字段,而不能有对象,如何扩展元化学以强制执行此操作。感谢任何帮助
问题内容: 我对Json文件很陌生。如果我有一个包含多个json对象的json文件,例如: 我想将所有“时间戳记”和“有用性”提取到一个数据帧中: 有谁知道解决此类问题的一般方法? 问题答案: 使用json数组,格式为: 然后将其导入到您的python代码中 现在,数据的内容是一个带有字典的数组,字典表示每个元素。 您可以轻松访问它,即: