JSON 在 AWS Lambda 中使用自定义 Class 时出现解析错误
JSON parsing error when using Custom Class in AWS Lambda
我正在关注 AWS Lambda tutorial。我创建了一个 Lambda 函数,它将自定义 class 作为输入并输出另一个自定义 class。输入测试数据时出现 JSON 解析错误。
public class HelloPojo implements RequestHandler<RequestClass, ResponseClass>{
@Override
public ResponseClass handleRequest(RequestClass request, Context context){
String greetingString = String.format("Hello %s, %s.", request.firstName, request.lastName);
return new ResponseClass(greetingString);
}
}
这是测试输入{ "firstName":"John", "lastName":"Doe" }
。我相信 AWS 需要 json 格式的输入,然后对其进行解析。以下是自定义请求class对象:
public class RequestClass {
String firstName;
String lastName;
public RequestClass(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public RequestClass() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
这是错误信息:
"errorMessage": "An error occurred during JSON parsing",
"errorType": "java.lang.RuntimeException",
"stackTrace": [],
"cause": {
"errorMessage": "org/json/simple/JSONObject",
"errorType": "java.lang.NoClassDefFoundError",
这是响应类:
public class ResponseClass {
String greetings;
public ResponseClass(String greetings) {
this.greetings = greetings;
}
public ResponseClass() {
}
public String getGreetings() {
return greetings;
}
public void setGreetings(String greetings) {
this.greetings = greetings;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
如果您看到收到的错误消息 json
。你会得到你的答案。
"errorMessage": "org/json/simple/JSONObject",
"errorType": "java.lang.NoClassDefFoundError",
Error Type :- NoClassDefFoundError
Exception means, At runtime when a dependent jar try to link the class named org.json.simple.JSONObject
. It will not found in your library
.
解决方案
请将 json-simple-1.1.jar
添加到库中。如果已经存在,那么清理你的工作区并重建你的项目。它对你很好用。
我正在关注 AWS Lambda tutorial。我创建了一个 Lambda 函数,它将自定义 class 作为输入并输出另一个自定义 class。输入测试数据时出现 JSON 解析错误。
public class HelloPojo implements RequestHandler<RequestClass, ResponseClass>{
@Override
public ResponseClass handleRequest(RequestClass request, Context context){
String greetingString = String.format("Hello %s, %s.", request.firstName, request.lastName);
return new ResponseClass(greetingString);
}
}
这是测试输入{ "firstName":"John", "lastName":"Doe" }
。我相信 AWS 需要 json 格式的输入,然后对其进行解析。以下是自定义请求class对象:
public class RequestClass {
String firstName;
String lastName;
public RequestClass(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public RequestClass() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
这是错误信息:
"errorMessage": "An error occurred during JSON parsing",
"errorType": "java.lang.RuntimeException",
"stackTrace": [],
"cause": {
"errorMessage": "org/json/simple/JSONObject",
"errorType": "java.lang.NoClassDefFoundError",
这是响应类:
public class ResponseClass {
String greetings;
public ResponseClass(String greetings) {
this.greetings = greetings;
}
public ResponseClass() {
}
public String getGreetings() {
return greetings;
}
public void setGreetings(String greetings) {
this.greetings = greetings;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
如果您看到收到的错误消息 json
。你会得到你的答案。
"errorMessage": "org/json/simple/JSONObject",
"errorType": "java.lang.NoClassDefFoundError",
Error Type :-
NoClassDefFoundError
Exception means, At runtime when a dependent jar try to link the class namedorg.json.simple.JSONObject
. It will not found in yourlibrary
.
解决方案
请将 json-simple-1.1.jar
添加到库中。如果已经存在,那么清理你的工作区并重建你的项目。它对你很好用。