繁体   English   中英

映射到AWS Lambda中的POJO的嵌套JSON返回null

[英]Nested JSON mapped to POJO in AWS Lambda is returning null

我正在尝试运行一个lambda函数,它将获取几个嵌套的JSON作为输入。 我正在尝试用POJO类映射它们。 但是嵌套的JSON的值返回null。 我在这里给出了问题的样本。

    Input:
{
  "firstName": "Raj",
  "lastName": "Guru",

  "parameters" : {
      "Address ": "Testaddress",
      "POBOX" : "123"
  }
}

OutPut:
Uploading function code to lambda...
Upload success. Function ARN: arn:aws:lambda:eu-central-1:938487755516:function:lambda
Invoking function...
==================== FUNCTION OUTPUT ====================
{"greetings":"Hello `Raj,` null.null"}

package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class HelloPojo implements RequestHandler<RequestClass, ResponseClass> {

public ResponseClass handleRequest(RequestClass request, Context context){
    String greetingString = String.format("Hello %s, %s.", request.getFirstName(), request.getparameters().getAddress());
 greetingString+= request.getparameters().getAddress();

            return new ResponseClass(greetingString);
}

---------------------------------------------------------------------------------------------------------------
package com.amazonaws.lambda.demo;

public class parameters {
    private  String Address;
    private  String POBOX;

    public String getAddress() {
        return Address;
    }
    public void setAddress(String Address) {
        this.Address = Address;
    }
    public String getPOBOX() {
        return POBOX;
    }
    public void setPOBOX(String POBOX) {
        this.POBOX = POBOX;
    }
    public parameters(String Address,String POBOX) {

        this.Address = Address;
        this.POBOX = POBOX;
    }
     public parameters() {
        }
    @Override
    public String toString(){
        return getPOBOX()+getAddress();
    }



}

// RequestClass:

package com.amazonaws.lambda.demo;

import com.fasterxml.jackson.annotation.JsonProperty;

public class RequestClass {

    private parameters parameters = new parameters( );

    @JsonProperty("parameters") 
    public parameters getparameters() {
        return parameters;
    }


     public void setparameters(parameters paramters) {

        this.parameters = paramters;
    }



        package com.amazonaws.lambda.demo;

 public class ResponseClass {
    String greetings;

    public String getGreetings() {
        return greetings;
    }

    public void setGreetings(String greetings) {
        this.greetings = greetings;
    }

    public ResponseClass(String greetings) {
        this.greetings = greetings;
    }

    public ResponseClass() {
    }

}



      private   String firstName;
          private  String lastName;

            public String getFirstName() {
                return firstName;
            }

            public void setFirstName(String firstName) {
                this.firstName = firstName;
            }

            public String getLastName() {
                return lastName;
            }

            public void setLastName(String lastName) {
                this.lastName = lastName;
            }

            public RequestClass(String firstName, String lastName) {
                this.firstName = firstName;
                this.lastName = lastName;
            }

            public RequestClass() {
            }
    @Override
            public String toString(){
                StringBuilder sb = new StringBuilder();
                sb.append("firstName=" + getFirstName() + "\n");
                sb.append("lastName=" + getLastName() + "\n");
                sb.append("parameters =" + getparameters() + "\n");
                return sb.toString();
            }
        }

尝试将类参数重命名为“类参数”。 大写。

您的代码的getter和setter函数存在一些问题。 我尝试在Eclipse中运行您的代码,并遇到相同的错误。 我认为您的参数类的getter和setter函数是不正确的。 [同意Iam,将参数类重命名为Parameter,并相应更新getter,setter方法]

此外,AWS Lambda会为您对输入JSON objetcs进行反序列化,因此您可能不需要使用Jackson注释对JSON输入进行反序列化。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM