2016-11-01 18 views
3

に私はAWS S3 GetObject関数を呼び出しています何:(AWS.Request) getObject(params = {}, callback)Unit8Arrayは、AWS S3バケット応答

私はこれを書いた:これは、コンソール出力である

getMenuJson() { 
    this.s3.getObject({ 
    Bucket: 'improd-image-pipeline', 
    Key: 'remoteUX/qa/menus/v1/menus.json', 
    ResponseContentType: 'application/json', 
    }, (err, data) => { 
    if (err) { 
     this.$log.log(err); 
    } else { 
     this.$log.log(data, JSON.parse(data.Body)); 
    } 
    }); 
} 

を、私はデータと実際に印刷しようS3コンソールのmenus.jsonファイル。 enter image description here

私が次のように印刷した場合の戻り値:JSON.parse(data.Body)、これが結果です。

{ 
    "menus":[ 
     { 
     "name": "Flat Collections Example", 
     "menuId": "aaa-3656-4a32-bdda-e2e016cf35ee" 
     }, 
     { 
     "name":"P3", 
     "menuId": "aaa-f5fc-4e18-9089-47e43a4237e8" 
     }, 
     { 
     "name": "Tabbed Menu Example", 
     "menuId": "aaa-768a-40bd-a9f4-b633f3679c36" 
     } 
    ] 
} 

しかし、レスポンスボディ:Unit8Arrayの理解方法と実際のjsonフォーマットデータの解釈方法について教えてください。

私はAngular.toJson(data.Body)を使用していますが、この関数はそれを理解できませんでしたが、JSON.parse(data.Body)は正しい結果を得ます。

+0

をS3にアップロードするときに正しいのcontentTypeを設定していますか? – japrescott

+0

私はcontentType: 'application/json'を試しましたが、運がまだありません –

+0

'.getObject()'は 'fetch()'のラッパーですか? – guest271314

答えて

-1

JavaScript用にAWS SDKを使用することをおすすめします。 http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/working-with-json.html

JavaScript用のAWS SDKは、AWSサービス用のJavaScript APIを提供します。 SDKを使用すると、ブラウザ用のJavaScriptアプリケーションを構築できます。 JavaScript APIを使用すると、開発者はAWSサービスを利用するライブラリやアプリケーションを構築できます。使用する

スクリプトはここにある:https://sdk.amazonaws.com/js/aws-sdk-2.6.10.min.js

2

これは、8ビット符号なし整数の配列を表すJavaScript型付き配列です。

AWS.Request.getObject()の戻り値は、次のいずれかです。バッファ、型付き配列、Blob、String、ReadableStream

詳細はAWS docsで確認できます。

あなたのケースでは、Uint8Array(JavaScript型付き配列)です。

は、より多くを理解する:JavaScript Typed ArraysUint8Array object

関連する問題