【问题标题】:How to convert data from AWS lambda node.js to JSONObject in Java如何在 Java 中将数据从 AWS lambda node.js 转换为 JSONObject
【发布时间】:2016-10-19 00:48:26
【问题描述】:

我的 lambda 代码 sn-p 是

dynamodb.query( params
, function(err, data) {
    if (err) {
        context.done(err);
    }
    else {
        console.log(JSON.stringify(data)); // successful response
        var size = data.Items.length;
        console.log("size:"+ size);
        var rand = Math.floor(Math.random() * (size));
        console.log("rand" + rand);
        var ret = data.Items[rand].content;
        console.log(ret);
        context.succeed(JSON.stringify(ret));
    }

我的 AWS Lambda 日志 ("console.log(JSON.stringify(data)); // 成功响应") 是

{"Items":[{"content":{"S":"content1"}},{"content":{"S":"content2"}}],"Count":2,"ScannedCount":2}

“JSON.stringify(ret)”的结果是

{"S":"content1"}

在我的 Android 代码中,调用此 API 并显示结果。 但它只显示“java.lang.String 无法转换为 JSONObject”

我想知道如何在Android中转换为JSONObject。

我在 Android 中使用了这段代码

new JSONObject(notice).getJSONObject("S");

【问题讨论】:

  • 通过调试仔细检查您的notice 变量。当存在语法问题时,通常会抛出“无法转换”错误。
  • 嗨@donkon 通知变量实际上是 "{"S":"content1"}" 。它没有错。所以这让我发疯。我应该做什么检查更多?

标签: json node.js amazon-web-services amazon-dynamodb aws-lambda


【解决方案1】:

问题是你打电话给getJSONObject。你得到的对象是String

{"S":"content1"}
^JSON    ^String

你应该打电话给get

JSONObject jsonNotice = new JSONObject("{\"S\":\"hello, world\"}");
String contentsOfS = jsonNotice.get("S");

getJSONObject 方法用于嵌套的 JSON 对象:

{"S": {"foo": "bar"}}
^JSON ^JSON

【讨论】:

  • String contentsOfS = jsonNotice.getString("S");这就是我解决的事情!非常感谢!
猜你喜欢
  • 2019-09-21
  • 2011-07-11
  • 2020-01-12
  • 2020-11-30
  • 2016-12-21
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多