Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中创建有效的json对象_Python_Json - Fatal编程技术网

在python中创建有效的json对象

在python中创建有效的json对象,python,json,Python,Json,每一行都是有效的JSON,但我需要整个文件都是有效的JSON 我有一些从web服务聚合并转储到文件的数据,因此它是JSON eaque,但不是有效的JSON,因此无法以JSON文件所能提供的简单直观的方式处理它-因此构成了一个主要的难题,它看起来(或多或少)像这样: {"record":"value0","block":"0x79"} {"record":"value1","block":"0x80"} 我一直试图将其重新解释为有效的JSON,我最近的尝试如下所示: with open('

每一行都是有效的JSON,但我需要整个文件都是有效的JSON

我有一些从web服务聚合并转储到文件的数据,因此它是JSON eaque,但不是有效的JSON,因此无法以JSON文件所能提供的简单直观的方式处理它-因此构成了一个主要的难题,它看起来(或多或少)像这样:

{"record":"value0","block":"0x79"} 
{"record":"value1","block":"0x80"} 
我一直试图将其重新解释为有效的JSON,我最近的尝试如下所示:

with open('toy.json') as inpt:
    lines = []
    for line in inpt:
        if line.startswith('{'):  # block starts
            lines.append(line) 
然而,正如你可能从我提出这个问题的事实中推断出来的那样——这是行不通的——关于我如何解决这个问题,你有什么想法吗

编辑:

我试过这个:

with open('toy_two.json', 'rb') as inpt:

    lines = [json.loads(line) for line in inpt] 

print(lines['record'])
但出现以下错误:

Traceback (most recent call last):
  File "json-ifier.py", line 38, in <module>
    print(lines['record'])
TypeError: list indices must be integers, not str

每一行看起来都像一个有效的JSON文档

这是“JSON行”格式()

尝试独立地处理每一行(
json.loads(line)
)或使用专门的库()


每一行看起来都像一个有效的JSON文档

这是“JSON行”格式()

尝试独立地处理每一行(
json.loads(line)
)或使用专门的库()


这看起来像我最近使用的NDJSON。该规范是有效的,我不确定它是否有用。下面的方法有效吗

with open('the file.json', 'rb') as infile:
    data = infile.readlines()
    data = [json.loads(item.replace('\n', '')) for item in data] 

这应该会给你一个字典列表。

这看起来像是我最近使用的NDJSON。该规范是有效的,我不确定它是否有用。下面的方法有效吗

with open('the file.json', 'rb') as infile:
    data = infile.readlines()
    data = [json.loads(item.replace('\n', '')) for item in data] 


这会给你一个字典列表。

每一行都是有效的JSON吗?例如:
lines=[json.loads(line)for line in inpt]
做这项工作吗?
lines.append(json.loads(line))
?是的,但我不想处理每一行-我想处理整个文件-真正的一行有数百万条记录,
[json.loads(line)for line in inpt]
以什么方式不构成“将文件作为一个整体处理”?我现在很困惑。如果这个文件是有效的JSON,它将是一个列表,对吗?你想将它解释为什么类型?每行都是有效的JSON吗?例如:
lines=[JSON.loads(line)for line in inpt]
完成工作吗?
lines.append(JSON.loads(line))
?是的,但我不想处理每一行-我想作为一个整体处理文件-真正的一行有数百万条记录,
[json.loads(line)for line in inpt]
以什么方式不构成“作为一个整体处理文件”“我现在很困惑。如果这个文件是有效的JSON,它将是一个列表,对吗?你想把它解释成什么类型?我想把文件作为一个整体来处理——因为真正的文件有数百万条记录?您可以像在代码中一样迭代输入文件的每一行,并在“for”循环中应用json.loads(line)。听起来很昂贵,我希望这样做既便宜又快速。如果您将所有解析的行存储在一个全局列表中,是的,这在RAM中会很昂贵。如果独立处理每一行,则当前行只使用一点内存。这就是“基于流的编程”。好吧,很酷-这只是
数据[0]['record']
的问题-无论如何-谢谢你的这些伟大见解!我想把文件作为一个整体来处理——因为真正的文件有数百万条记录?您可以像在代码中一样迭代输入文件的每一行,并在“for”循环中应用json.loads(line)。听起来很昂贵,我希望这样做既便宜又快速。如果您将所有解析的行存储在一个全局列表中,是的,这在RAM中会很昂贵。如果独立处理每一行,则当前行只使用一点内存。这就是“基于流的编程”。好吧,很酷-这只是
数据[0]['record']
的问题-无论如何-谢谢你的这些伟大见解!当我刚刚尝试它时,我得到了一个错误
print(data['record'])TypeError:列表索引必须是整数,而不是str
,我如何验证它是否有效?因为这会解析文件并给你一个字典列表,而不是字典。但我想与它进行交互,就像与json进行交互一样,在普通的json中,我可以调用像
data['record']
这样的东西,你知道我的意思吗?该死-我很抱歉这正是
data[0]['record']
-谢谢你的大力帮助!~:)@s、 matthew.english它仍然是一个列表,所以
items()
已退出<代码>记录=[item['record']表示数据中的项]应该这样做吗?我猜格式的要点是每一行都是有效的json,但文件作为一个整体不是。我也觉得这有点不舒服,但是你确实有一个字典列表,所以如果你知道如何迭代列表并按键抓取东西,那就没那么糟糕了。当我刚刚尝试时,我遇到了这个错误
print(data['record'])TypeError:列表索引必须是整数,而不是str
,我如何验证它是否有效?因为它会解析文件并给你一个字典列表,而不是字典。但我想与它进行交互,就像我可以与json进行交互一样,在普通json中,我可以称之为
data['record']
你知道我的意思吗?该死-我很抱歉这正是
data[0]['record']
-感谢您的大力帮助!~:)@s、 matthew.english它仍然是一个列表,所以
items()
已退出<代码>记录=[item['record']表示数据中的项]应该这样做吗?我猜格式的要点是每一行都是有效的json,但文件作为一个整体不是。我觉得这也有点不舒服,但你确实有一个字典列表,所以如果你知道如何遍历列表并按键抓取内容,那就没那么糟糕了。
with open('the file.json', 'rb') as infile:
    data = infile.readlines()
    data = [json.loads(item.replace('\n', '')) for item in data]