2016-12-06 90 views
12

我一直在S3鬥「測試」讀從S3使用Python的JSON文件boto3

{ 
    'Details' : "Something" 
} 

以下JSON我使用下面的代碼讀取該JSON和打印鍵「詳細信息」

s3 = boto3.resource('s3', 
        aws_access_key_id=<access_key>, 
        aws_secret_access_key=<secret_key> 
        ) 
content_object = s3.Object('test', 'sample_json.txt') 
file_content = content_object.get()['Body'].read().decode('utf-8') 
json_content = json.loads(repr(file_content)) 
print(json_content['Details']) 

,我得到錯誤的「字符串索引必須是整數」 我不想從S3下載該文件,然後讀取..

+5

刪除'repr'。 –

+1

@AlexHall最初我嘗試通過刪除'repr',但它沒有工作,它給** ** ValueError:期望用雙引號括起來的屬性名稱** – Nanju

+2

我解決了這個問題.. JSON應該有用雙引號括起來的屬性..我改變我的JSON格式 – Nanju

回答

4

正如在上面的評論中提到的,repr必須被刪除,json文件必須使用雙引號的屬性。在AWS/S3使用本文件:

{ 
    "Details" : "Something" 
} 

和下面的Python代碼,它的工作原理:

import boto3 
import json 

s3 = boto3.resource('s3') 

content_object = s3.Object('test', 'sample_json.txt') 
file_content = content_object.get()['Body'].read().decode('utf-8') 
json_content = json.loads(file_content) 
print(json_content['Details']) 
# >> Something