簡體   English   中英

Python 如何在嵌套的 JSON 上使用 JSON 轉儲以避免雙重編碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM