[英]Python how to use JSON dumps on a nested JSON to avoid double encoding
我正在使用以下代碼從 S3 讀取 CSV:
s3 = boto3.client('s3','us-east-1')
bucket = "bucket"
key = "key"
obj = s3.get_object(Bucket=bucket, Key=key)
fieldnames = [i for i in range(0,13)]
lines1 = obj['Body'].read().decode('utf-8').split('\n')
testls = [row for row in csv.DictReader(lines1[1:], fieldnames)]
out = json.dumps([row for row in testls])
但問題是 CSV 中的一個字段是 JSON ,因此最后一步生成的 JSON 字符串最終如下所示:
{"Date": "2020-03-02 15:18:10.724017", "First?": "", "metadata": "{\"field1\":\"NULL\"}"}
我怎樣才能避免這種情況?
您可以在讀取行時將元數據擴展為 python dict,以便將其集成到 json 字符串中。 作為旁注, testls 已經是一個列表,不需要額外的列表理解。
s3 = boto3.client('s3','us-east-1')
bucket = "bucket"
key = "key"
obj = s3.get_object(Bucket=bucket, Key=key)
fieldnames = [i for i in range(0,13)]
lines1 = obj['Body'].read().decode('utf-8').split('\n')
testls = []
for row in csv.DictReader(lines1[1:], fieldnames):
row["metadata"] = json.loads(row["metadata"])
testls.append(row)
out = json.dumps(testls)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.