他の人に役立つかもしれません。私はこのようにしましたが、もっと良い方法や簡単な方法があれば教えてください。Cloud Storage Java API と依存関係 (http クライアント API と oauth API) をダウンロードする必要があります:
https://developers.google.com/api-client-library/java/apis/
jackson のような JSON パーサーをダウンロードする必要があります。
手順:
1> Java クラウド ストレージ API を使用して、json ファイルを入力ストリームとして読み取ります
Storage.Objects.Get getObject = client.objects().get("shiladityabucket", "abc.json");
InputStream input = getObject.executeMediaAsInputStream();
2> Javaオブジェクトの配列に変換します(私の場合、jsonファイルには複数のレコードがあります)。単一のレコードの場合、配列は必要ありません。
ObjectMapper mapper = new ObjectMapper();
BillingInfo[] infoArr = mapper.readValue(input, BillingInfo[].class);
3> クラウド ストレージにアップロードする StorageObject を作成する
StorageObject objectMetadata = new StorageObject()
// Set the destination object name
.setName("abc.json")
// Set the access control list to publicly read-only
.setAcl(Arrays.asList(
new ObjectAccessControl().setEntity("allUsers").setRole("READER")));
4>配列内のオブジェクトを繰り返し処理し、それらをjson文字列に変換します。ndjson に改行を追加します。
for (BillingInfo info:infoArr) {
jSonString += mapper.writeValueAsString(info);
jSonString += "\n";
}
5>クラウドストレージJava APIを使用して挿入する入力ストリームを作成します
InputStream is = new ByteArrayInputStream(jSonString.getBytes());
InputStreamContent contentStream = new InputStreamContent(null, is);
6>ファイルをアップロード
Storage.Objects.Insert insertRequest = client.objects().insert(
"shiladitya001", objectMetadata, contentStream);
insertRequest.execute();