【问题标题】:App Engine Servlet: how to parse a request body containing a JSON-encoded message?App Engine Servlet:如何解析包含 JSON 编码消息的请求正文?
【发布时间】:2016-04-08 15:25:10
【问题描述】:

我使用 Cloud Storage 对象更改通知来通知我的 App Engine 服务器有一个新文件已上传。对象更改通知作为 POST 请求发送到 App Engine 中的 servlet。

请求的正文包含一条 JSON 编码的消息,如以下通知请求示例所示,直接从 Google 文档 (https://cloud.google.com/storage/docs/object-change-notification) 复制:

{
"kind": "storage#object",
"id": "BucketName/ObjectName",
"selfLink": "https://www.googleapis.com/storage/v1/b/BucketName/o/ObjectName",
"name": "ObjectName",
"bucket": "BucketName",
"generation": "1367014943964000",
"metageneration": "1",
"contentType": "binary/octet-stream",
"updated": "2013-04-26T22:22:23.832Z",
"size": "10",
"md5Hash": "xHZY0QLVuYng2gnOQD90Yw==",
"mediaLink": "https://www.googleapis.com/storage/v1/b/BucketName/o/ObjectName?generation=1367014943964000&alt=media",
....
}

我的问题是将 JSON 内容解析为 java 对象的最佳解决方案是什么?我想最好的办法是使用像例如这样的库。谷歌 gson,但有没有特别推荐与 App Engine 一起使用的?还是有其他更好的方法?

谢谢!

【问题讨论】:

  • 使用你知道的库。当您执行数百万次的关键任务任务时,知名库之间的差异就会变得很明显。

标签: json google-app-engine servlets google-cloud-storage


【解决方案1】:

最后我使用了 Google gson 库,因为我只想解析 JSON 的几个元素,所以我使用了以下代码:

JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(req.getReader()).getAsJsonObject();
String objectName = obj.get("name").getAsString();
String objectBucket = obj.get("bucket").getAsString();

效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2021-11-28
    • 2018-11-20
    • 1970-01-01
    • 2010-11-13
    • 2013-10-16
    • 2012-11-13
    相关资源
    最近更新 更多