我的程序是用Java8写的,当我使用LocalDateTime的类型时,它会给我以下错误:
没有为类型[simple type,class java.time.LocalDateTime]找到合适的构造函数:无法从JSON对象实例化(缺少默认构造函数或创建者,或者可能需要添加/启用类型信息?)
在[来源:[B@5976fe6f; 行:1,列:80](通过引用链:com.boot.framwork.entity.UserInfo[“accessTime”])
实体是这样的:
public class UserInfo implements Serializable {
private static final long serialVersionUID = 1L;
private String username;
private int age;
private LocalDateTime accessTime;
private Date time;
private List<String> list = new ArrayList<String>();
private boolean isMarried;
public UserInfo() {
}
当我不使用LocalDateTime时,它起作用了
我也遇到了同样的问题,需要将MyCustomClass
正确地引入和退出Lambda函数
,这样它就可以在Step函数
中通过我的状态机
。
我用下面的帖子想出了最好的答案:
带有jackson注释的AWS Lambda json反序列化
这是我的代码,为我工作:
import java.io.InputStream;
import java.io.OutputStream;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
public class StaticSearchPagingLambdaFunctionHandler implements RequestStreamHandler {
LambdaLogger logger = null;
MyCustomClass myCustomClass = null;
// Register the JavaTimeModule for LocalDate conversion
ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule());
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) {
myCustomClass = objectMapper.readValue(inputStream, MyCustomClass .class);
// ...
// Do stuff with myCustomClass
// ...
objectMapper.writeValue(outputStream, myCustomClass);
}
}
尽管JSON字符串在ObjectMapper
写入OutPutStream
时会以不同的方式打印出来,但当下一个lambda函数在执行步骤函数时接收它时,它仍然会正确地转换为
LocalDate
。
确保在
MyCustomClass
中您的toString()
方法正确打印。我的toString()
方法如下所示:
import java.time.LocalDate;
import org.json.JSONObject;
public class SimpleSearch {
private LocalDate startDate;
private LocalDate endDate;
// ...
// Getters and Setters for the LocalDate variables
// ...
@Override
public String toString() {
return new JSONObject(this).toString();
}
public SimpleSearch() {}
}
然后,当JSON打印输出被发送到lambda时,它总是这样,而不是其他疯狂的
Jackson
格式:
{
"startDate": "2018-11-01",
"endDate": "2018-11-16"
}
我使用的一些Maven依赖项:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.7</version>
</dependency>
希望AWS能将
Jackson
转换修复为JSON之间的相互转换,这样我们就不必再求助于这些自定义转换了。
在我看来, that you don't have a JSR310 support.杰克逊需要一些额外的配置,以便能够识别Java8 Date
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.7.4</version>
</dependency>
或者如果你用梯度
compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.7.4'
由于您使用SpringBoot,这应该就足够了,因此不需要手动创建JSR310Module类型的Bean。
问题内容: 我正在实现他们文档中提供的firebase示例。我遇到此错误: com.fasterxml.jackson.databind.JsonMappingException:没有为类型[简单类型,类com.XYZ。$ BlogPost]找到合适的构造函数:无法从JSON对象实例化(需要添加/启用类型信息吗?) 这是我的代码: 我在同一件事上经历了很多问题,说要包含反序列化JSON所需的空构造
问题内容: 我是Java的新手,正在尝试为Minecraft制作一个mod,但我不知道如何解决此错误: 这是我的代码: 这是怎么回事,我正在尝试使字符串“ Username”重定向到另一个类。 问题答案: Java编译器告诉您不能构造对象,因为您对构造函数的调用与任何已知的构造函数都不匹配。 具体来说,编译器发现了两个构造函数: 但您致电给: 都不匹配。
我在运行代码时得到了这个错误,我在跟踪treehouse Build a blog reader android应用程序,现在我得到了这个错误 错误:(120,52)错误:找不到适合ArrayAdapter(MainListActivity.GetBlogPostStask,int,String[])的构造函数ArrayAdapter.ArrayAdapter(Context,int,int)不适
从javase api 8开始,是不推荐的。因此,动态生成是首选的导出对象方式,如下所示: null 我的问题是,当出现在JavaE8 api中时,为什么编译器会出错?
我对编程很陌生,一直在尝试为学校项目的片段添加一个列表视图+arrayadapter。已经提到了这个问题,但没有用。https://stackoverflow.com/questions/32350275/no-application-constructor-found-for-ArrayAdapterMainListActivity-getBlogPostStask#= }