[英]Convert standard JSON file to json-serde format using Python & upload to AWS S3 bucket for Amazon Athena (Presto, Hive)
[英]How to convert Amazon Ion file to JSON format using Python?
我想將 Amazon Ion 文件從 S3 存儲桶轉換為 JSON 格式。
我正在嘗試以下代碼
import json
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('some/path/')
ion_body = bucket.Object('xxxxxxxxxxxxxx.ion').get()['Body'].read().decode("utf-8")
json.loads(ion_body)
但我得到以下JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
錯誤。 因為在 Ion 文件中,鍵是不帶引號聲明的。
亞馬遜 Ion 文檔說我們可以將 Ion 下轉換為 Json。 但我沒有任何辦法。 請幫我。 謝謝!
您可以使用 pyion2json
import json
import boto3
from pyion2json import ion_to_json
s3 = boto3.resource('s3')
bucket = s3.Bucket('some/path/')
ion_body = bucket.Object('xxxxxxxxxxxxxx.ion').get()['Body'].read().decode("utf-8")
print(ion_to_json(ion_body))
Ion Cookbook 有一個例子( 參考)
除了 amazon.ion,您還需要安裝 jsonconversion。
對於你的情況,你會這樣做:
import boto3
from amazon.ion.json_encoder import IonToJSONEncoder
from amazon.ion.simpleion import loads
import json
s3 = boto3.client('s3')
ion_body = s3.get_object(Bucket='somebucket', Key='xxxxxxxxxxxxxx.ion')['Body'].read()
json.dumps(ion_body, cls=IonToJSONEncoder)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.