在AWS API网关中将对象转换为JSON模型

时间:2019-11-23 23:12:51

标签: json aws-lambda aws-api-gateway

我有一个对象,我需要在api网关中创建一个json模型。 我尝试这样做,但是在测试时,它会将一个对象传递给一个lambda函数,并且其中的所有内容均为null。我测试了lambda,它工作正常。

这是我要转换的对象:

public class NewStatusRequest {

   public Status status;
   public List<String> tags;
   public String token;

   public NewStatusRequest(){}

   public NewStatusRequest(Status status, List<String> tags) {
      this.status = status;
      this.tags = tags;
   }
}

public class Status {

   public LinkProfilePicture profilePicture;
   public String firstName;
   public String lastName;
   public String handle;
   public String timestamp;
   public String text;
   public LinkAttachmentImage attachedPicture;

   public Status(){}

   public Status(String firstName, String lastName, String handle,
              String text, String timestamp, LinkProfilePicture picture) {

      this.firstName = firstName;
      this.lastName = lastName;
      this.handle = handle;
      this.text = text;
      this.timestamp = timestamp;
      this.profilePicture = picture;
  }
}

public class LinkProfilePicture{
   private static final String LINK = "some http link";
   private static final String LINK_ENDING = "_profilePicture.txt";

   public String link;

   public LinkProfilePicture(String handle){
       this.link = LINK + handle + LINK_ENDING;
   }
}

public class LinkAttachmentImage {

   public String link;

   public LinkAttachmentImage(){}

   public LinkAttachmentImage(String link){
      this.link = link;
  }
}

这是我在api网关中使用的模型

{
"title": "NewStatusRequestBody",
"type": "object",
"properties": {

        "status":{
            "type": "object",
            "properties": {

                "profilePicture":{
                    "type": "object",
                    "description": "profile picture",
                    "properties":{
                        "link":{
                            "type": "string",
                        }
                    }
                },
                "firstName":{
                    "type": "string",
                    "description": ""
                },
                "lastName":{
                    "type": "string",
                    "description":""
                },
                "handle":{
                    "type": "string",
                    "description":""
                },
                "text":{
                    "type":"string",
                    "description":""
                },
                "timestamp":{
                    "type":"string"
                },
                "attachedPicture":{
                    "type":"object",
                    "properties":{
                        "link":{
                            "type": "string",
                        }
                    }
                }
            }
        },
        "tags":{
            "type":"array",
            "items":{
                "type":"string"
            }
        },
        "token":{
            "type":"string"
        }

}  

这是我用来测试lambda的代码

{
  "status": {
        "profilePicture": {
           "link": "TEST"
         },
       "firstName": "firstName",
       "lastName": "lastName",
       "handle": "@admin",
       "timestamp": "date",
       "text": "text",
       "attachedPicture": {
            "link": "TEST"
            }
     },
    "tags": [
        "test",
        "test#3"
    ],
    "token": "admin"
      }
  }

在lambda中,我尝试打印请求,但它说到达request.toString()时有一个空指针,但它不会进入if(request == null)条件:

public MessageResult saveNewStatus(NewStatusRequest request,
                                   Context context){

    LambdaLogger logger = context.getLogger();

    if(request == null){
        logger.log(TAG + "request received is null");
        return new MessageResult(null, "something went wrong");
    }

    logger.log(TAG + "request: " + request.toString());
    }

0 个答案:

没有答案