1

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}\"        }      ]    }  ]}"
Jorge Garcia
  • 65
  • 1
  • 7

0 Answers0