I'm trying to read a JSON file stored in an AWS S3 bucket, but when I try to parse the result with GSON I get the following error, since the result is returned with double quotes: "Expected BEGIN_OBJECT but was STRING at line 1 column 1"
Is there a way to read a JSON file from S3 without it coming with double quotes and the carriage return and newline special characters?
@Override
public String handleRequest(Map<String, String> event, Context context) {
final var logger = context.getLogger();
try (var provider = DefaultCredentialsProvider.create()) {
logger.log("Credentials provided.");
try (var s3Client = S3Client.builder()
.region(Region.US_EAST_2)
.credentialsProvider(provider)
.build()) {
logger.log("S3 Client built.");
final var request = GetObjectRequest.builder()
.key("my-file.json")
.bucket("my-bucket")
.build();
try (var reader = new BufferedReader(new InputStreamReader(s3Client.getObject(request), UTF_8))) {
return reader.lines().collect(Collectors.joining());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
JSON
{
"categories": [
{
"code": "abc",
"name": "category-example",
"movements": [
{
"name": "movement-example",
"filenamePattern": "file-${year}-${month}"
}
]
}
]
}
LAMBDA RESPONSE
"{ \"categories\": [ { \"code\": \"abc\", \"name\": \"category-example\", \"movements\": [ { \"name\": \"movement-example\", \"filenamePattern\": \"file-${year}-${month}\" } ] } ]}"