Amazon s3 使用SNS事件字符串初始化SNSEvent.java

Amazon s3 使用SNS事件字符串初始化SNSEvent.java,amazon-s3,events,Amazon S3,Events,我正在使用一个内部框架来使用S3事件。当前框架可以处理普通的S3EventNotifications,方法是获取事件InputStream,并像下面那样传递它 String inputStream = CharStreams.toString( new InputStreamReader(eventInputStream, StandardCharsets.UTF_8)); S3EventNotification s3EventNotification = S3EventNotification

我正在使用一个内部框架来使用S3事件。当前框架可以处理普通的S3EventNotifications,方法是获取事件InputStream,并像下面那样传递它

String inputStream = CharStreams.toString( new InputStreamReader(eventInputStream, StandardCharsets.UTF_8));
S3EventNotification s3EventNotification = S3EventNotification.parseJson(inputStream);
String inputStream = CharStreams.toString( new InputStreamReader(eventInputStream, StandardCharsets.UTF_8));
SNSEvent snsEvent = SomethingGoesHere.parseJson(inputStream);
出于技术原因,我现在需要更新这个框架以使用SNS事件,这与原始JSON透视图有很大不同。我希望找到一个S3EventNotification的SNSEvent等价物,这样我就可以做下面这样的事情

String inputStream = CharStreams.toString( new InputStreamReader(eventInputStream, StandardCharsets.UTF_8));
S3EventNotification s3EventNotification = S3EventNotification.parseJson(inputStream);
String inputStream = CharStreams.toString( new InputStreamReader(eventInputStream, StandardCharsets.UTF_8));
SNSEvent snsEvent = SomethingGoesHere.parseJson(inputStream);
外面有类似的东西吗?我已经浏览了一些aws java sdk以及Maven world中的aws lambda java事件工件,但似乎找不到任何适合的东西。有什么想法吗

使用解决方案编辑

最终解决了来自Maven的aws lambda java事件jar中的SNSEvent.java对象。我使用带有DateTime适配器的Gson来处理该对象内的DateTime时间戳,以及上面的\u CAMEL\u大小写命名策略,因为来自amazon的SNS事件是CAMEL大小写的,似乎工作正常

Gson gson = new GsonBuilder()
        .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
        .registerTypeAdapter(DateTime.class, new JsonDeserializer<DateTime>() {

            @Override
            public DateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
                    throws JsonParseException {
                return new DateTime(json.getAsString());
            }
        }).create();

    SNSEvent snsEvent = gson.fromJson(event, SNSEvent.class);
Gson Gson=new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_案例)
.registerTypeAdapter(DateTime.class,新的JsonDeserializer()){
@凌驾
公共日期时间反序列化(JsonElement json,类型typeOfT,JsonDeserializationContext)
抛出JsonParseException{
返回新的日期时间(json.getAsString());
}
}).create();
SNSEvent SNSEvent=gson.fromJson(事件,SNSEvent.class);

找到方法,用示例编辑原始帖子找到方法,用示例编辑原始帖子