Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用AWS Lambda java将json.simple.JSONObject转换为java.lang.String_Java_Json_Amazon Web Services_Amazon Dynamodb_Aws Lambda - Fatal编程技术网

无法使用AWS Lambda java将json.simple.JSONObject转换为java.lang.String

无法使用AWS Lambda java将json.simple.JSONObject转换为java.lang.String,java,json,amazon-web-services,amazon-dynamodb,aws-lambda,Java,Json,Amazon Web Services,Amazon Dynamodb,Aws Lambda,我正试图用Java Lambda解析POST请求中的“Body”。 我被这个错误困扰了一段时间 org.json.simple.JSONObject cannot be cast to java.lang.String 但记录时的身体是这样的: {"body":{"email":"test@test.com"}} 女巫应该和解析一起工作,我做得对吗? 奇怪的是,insert正在与JUNIT一起在本地工作,但在AWS上之后就不再在线了。 @Override public void handl

我正试图用Java Lambda解析POST请求中的“Body”。 我被这个错误困扰了一段时间

 org.json.simple.JSONObject cannot be cast to java.lang.String
但记录时的身体是这样的:

{"body":{"email":"test@test.com"}}
女巫应该和解析一起工作,我做得对吗? 奇怪的是,insert正在与JUNIT一起在本地工作,但在AWS上之后就不再在线了。

@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
    logger = context.getLogger();
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    Number user_id = null;
    String birthdate = null;
    List<Number> company_id = new ArrayList<Number>();
    String email = null;
    String employment_status = null;
    String firstname = null;
    String lastname = null;
    String login = null;
    String profile = null;
    List<Number> site_id = new ArrayList<Number>();
    String validation_status = null;
    JSONObject responseJson = new JSONObject();

    Map<String, AttributeValue> expressionAttributeValues = new HashMap<String, AttributeValue>();
    String filterExpression = "";
    String RegionAWS = REGION.toString();
    client = AmazonDynamoDBClientBuilder.standard().withRegion(RegionAWS).build();
    DynamoDB dynamoDB = new DynamoDB(client);
    Table table = dynamoDB.getTable("LI_user");
    try {
        JSONParser parser = new JSONParser();
        JSONObject event = (JSONObject) parser.parse(reader);
        logger.log(event.toJSONString());
        if (event.get("body") != null) {
            JSONObject bod = (JSONObject)parser.parse((String)event.get("body"));
         //   JSONObject bod = (JSONObject) event.get("body");
            if ( bod.get("id") != null) {
                user_id = (Number)bod.get("id");
            }
            if ( bod.get("birthdate") != null) {
                birthdate = (String)bod.get("birthdate");
            }
            if ( bod.get("email") != null) {
                email = (String) bod.get("email");
            }
            if ( bod.get("employment_status") != null) {
                employment_status = (String) bod.get("employment_status");
            }
            if ( bod.get("firstname") != null) {
                firstname = (String) bod.get("firstname");
            }
            if ( bod.get("lastname") != null) {
                lastname = (String) bod.get("lastname");
            }
            if ( bod.get("login") != null) {
                login = (String) bod.get("login");
            }
            if ( bod.get("profile") != null) {
                profile = (String) bod.get("profile");
            }
            if ( bod.get("validation_status") != null) {
                validation_status = (String) bod.get("validation_status");
            }
        }
@覆盖
公共void handleRequest(InputStream InputStream、OutputStream OutputStream、上下文上下文)引发IOException{
logger=context.getLogger();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(inputStream));
Number user_id=null;
字符串birthdate=null;
列表公司_id=new ArrayList();
字符串email=null;
字符串状态=空;
字符串firstname=null;
字符串lastname=null;
字符串login=null;
字符串配置文件=null;
List site_id=new ArrayList();
字符串验证\u状态=空;
JSONObject responseJson=新的JSONObject();
Map expressionAttributeValues=新HashMap();
字符串filterExpression=“”;
字符串RegionAWS=REGION.toString();
client=AmazonDynamoDBClientBuilder.standard().withRegion(RegionAWS.build();
DynamoDB DynamoDB=新DynamoDB(客户);
Table=dynamoDB.getTable(“LI_用户”);
试一试{
JSONParser=新的JSONParser();
JSONObject事件=(JSONObject)parser.parse(reader);
logger.log(event.toJSONString());
if(event.get(“body”)!=null){
JSONObject bod=(JSONObject)parser.parse((String)event.get(“body”);
//JSONObject bod=(JSONObject)event.get(“body”);
if(bod.get(“id”)!=null){
用户id=(Number)bod.get(“id”);
}
if(bod.get(“生日”)!=null){
birthdate=(字符串)bod.get(“birthdate”);
}
如果(bod.get(“email”)!=null){
email=(字符串)bod.get(“email”);
}
如果(董事会获取(“就业状况”)!=null){
就业状况=(字符串)bod.get(“就业状况”);
}
if(bod.get(“firstname”)!=null){
firstname=(字符串)bod.get(“firstname”);
}
if(bod.get(“lastname”)!=null){
lastname=(字符串)bod.get(“lastname”);
}
if(bod.get(“登录”)!=null){
login=(字符串)bod.get(“login”);
}
if(bod.get(“profile”)!=null){
profile=(字符串)bod.get(“profile”);
}
if(bod.get(“验证状态”)!=null){
验证状态=(字符串)bod.get(“验证状态”);
}
}
更换

JSONObject bod = (JSONObject)parser.parse((String)event.get("body"));

如果
event
始终是
JSONObject
的实例(似乎是理所当然的,否则您将在
JSONObject event=(JSONObject)parser.parse(reader);

你看到了吗

{"body":{"email":"test@test.com"}}

仅仅因为logger.log(event.toJSONString());

是的,谢谢你,我有了进步。 但现在,当我以JSON格式向Postman发送数据时,他似乎收到了一个字符串化版本的尸体。我在cloudwatch日志中获得了这些数据:

     "resource": "/users",
    "httpMethod": "POST",
    "queryStringParameters": null,
    "stageVariables": null,
    "body": "{\n \"id\": 5,\n \"company_id\": [\n    1\n  ],\n \"email\": \"test@test.com\",\n \"employment_status\": \"FULL-TIME\",\n \"firstname\": \"Sebastien\",\n \"lastname\": \"LALALLALA\",\n \"login\": \"test@test.com\",\n \"profile\": \"FULL-TIME\",\n \"site_id\": \"55\",\n \"birthdate\": \"1985.05.05\",\n \"validation_status\" : \"COMPLETE\"\n}\n"
}
这个错误是:

java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject

您已经有了
logger.log(event.toJSONString());
因为
event
JSONObject
。那么为什么不替换
JSONObject bod=(JSONObject)parser.parse((String)event.get(“body”);
JSONObject bod=(JSONObject)event.get(“body”)如果您的请求的结构是稳定的,那么您也可以考虑使用POJO而不是从<代码>输入流< /代码>中消费,并且使用这么多类型化,也就是说,您好,是的,我正在发送原始JSON体,内容类型被设置为Apple。ion/json
java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject