Java8からS3に配置したJSONファイルを読み取る
Java8からS3に配置したJSONファイルを読み込んでみます。読み込むファイルはa.jsonとします。
a.json
{ "key1": { "key2": "test2", "key3": "test3" } }
bucket名はconfrageとしておきます。
S3ObjectInputStreamクラスのインスタンスをObjectMapper#readValueメソッドの第一引数に渡します。第二引数はnew TypeReference<Map<String, Object>>() {}にします。
これでMap<String, Object>が返ります。
以下、サンプルソースです。
package jp.co.confrage.samples; import java.io.IOException; import java.util.Map; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.GetObjectRequest; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectInputStream; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; public class Sample { @SuppressWarnings("unchecked") public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { AWSCredentials credentials = new ProfileCredentialsProvider("default").getCredentials(); AmazonS3 s3 = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion("ap-northeast-1") .build(); String bucketName = "confrage"; String objectkey = "a.json"; S3Object object = s3.getObject(new GetObjectRequest(bucketName, objectkey)); S3ObjectInputStream s3Stream = object.getObjectContent(); ObjectMapper objectMapper = new ObjectMapper(); Map<String, Object> inputJsonMap = objectMapper.readValue(s3Stream, new TypeReference<Map<String, Object>>() {}); Map<String, Object> key = (Map<String, Object>) inputJsonMap.get("key1"); // 読み込む String key2 = (String) key.get("key2"); String key3 = (String) key.get("key3"); System.out.println(key2); // test2 System.out.println(key3); // test3 } }
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント