【发布时间】:2021-08-04 08:42:26
【问题描述】:
我在 S3 中有一个包含多个 json 对象的 json 文件,其结构如下所示。
"{"category" : "random", "a": 1, "b": 2, "c": 3}"
"{"category" : "automobile", "brand": "bmw", "car": "x3", "price": "100000"}"
"{"category" : "random", "a": 7, "b": 8, "c": 9}"
如您所见,这个 json 文件包含多个 json 对象,这些对象被包装为字符串。
我想从 s3 读取这个 json 文件并解析它。所以我做了如下。
import boto3
import json
s3 = boto3.resource('s3')
content_object = s3.Object(bucket,key)
file_content = content_object.get()['Body'].read().decode('utf-8')
json_content = json.loads(file_content)
print(json_content['Details'])
但我收到以下错误。 json.decoder.JSONDecodeError: Extra data
我认为这是因为这个 json 文件包含多个 json 对象,每个对象都包含在一个字符串中。
如果我能设法在每个 json 对象的末尾和开头获取每个引号,我想我可以解析它。
但我不太确定这是否是唯一(或最好)的方法(如果我设法以有效的方式做到这一点)
无论如何都要解析这个 json 吗?
注意:每个 Json 不需要具有所有相同的属性,虽然这个 json 文件我只放了 3 个对象,但我想将它们缩放到更大的比例。
【问题讨论】:
标签: python json amazon-s3 boto3