【发布时间】:2023-03-23 22:53:01
【问题描述】:
我可以使用 gson 将包含 long 字段的 POJO 正确插入到 mongodb 服务器。
但是当我使用 Gson 将它反序列化回 pojo 时,我得到了这个错误:
javax.servlet.ServletException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a long but was BEGIN_OBJECT at line 1 column 171 path $.sentTime
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a long but was BEGIN_OBJECT at line 1 column 171 path $.sentTime
java.lang.IllegalStateException: Expected a long but was BEGIN_OBJECT at line 1 column 171 path $.sentTime
我的 mongo db 文档如下所示:
{
"_id" : ObjectId("57ff7c30385bb63b1c185b8e"),
"chatId" : "57f95e8e385bb61c5cf2cd18",
"sender" : "57ec1aaa0ffe16123439d52b",
"message" : "Hello Again",
"sentTime" : NumberLong("1476361264229")
}
POJO:
public class MessageSingle implements Message {
private ObjectId id;
private String chatId;
private String sender;
private String message;
private MessageType messageType;
private long sentTime;
@Override
public ObjectId getId() {
return id;
}
@Override
public void setId(ObjectId id) {
this.id = id;
}
@Override
public String getChatId() {
return chatId;
}
@Override
public void setChatId(String chatId) {
this.chatId = chatId;
}
@Override
public void setSender(String sender) {
this.sender=sender;
}
@Override
public String getSender() {
return sender;
}
@Override
public void setMessage(String message) {
this.message=message;
}
@Override
public String getMessage() {
return message;
}
@Override
public void setMessageType(MessageType messageType) {
this.messageType=messageType;
}
@Override
public MessageType getMessageType() {
return messageType;
}
@Override
public void setSentTime(long time) {
this.sentTime=time;
}
@Override
public long getSentTime() {
return sentTime;
}
}
当我将 long 更改为 int 或 string 时,它运行良好,但不适用于 long。 我该如何解决。 谢谢
【问题讨论】:
标签: java mongodb gson deserialization mongodb-java