我在Scala中使用Jackson作为映射器定义了以下类。
package models
import play.api.Play.current
import org.codehaus.jackson.annotate.JsonProperty
import net.vz.mongodb.jackson.ObjectId
import play.modules.mongodb.jackson.MongoDB
import reflect.BeanProperty
import scala.collection.JavaConversions._
import net.vz.mongodb.jackson.Id
import org.codehaus.jackson.annotate.JsonIgnoreProperties
case class Team(
@BeanProperty @JsonProperty("teamName") var teamName: String,
@BeanProperty @JsonProperty("logo") var logo: String,
@BeanProperty @JsonProperty("location") var location: String,
@BeanProperty @JsonProperty("details") var details: String,
@BeanProperty @JsonProperty("formOfSport") var formOfSport: String)
object Team {
private lazy val db = MongoDB.collection("teams", classOf[Team], classOf[String])
def save(team: Team) { db.save(team) }
def getAll(): Iterable[Team] = {
val teams: Iterable[Team] = db.find()
return teams
}
def findOneByTeamName(teamName: String): Team = {
val team: Team = db.find().is("teamName", teamName).first
return team
}
}
插入mongoDB工作没有问题,一个_id
会自动为每个文档插入。
但现在我想尝试读取(或反序列化)文档,例如通过调用findOneByTeamName
。这总是会导致_id出现无法识别的属性异常。
我使用团队创建实例。应用
和团队。取消应用
。即使有自己的ObjectId,这也不起作用,因为\u id
和id
被视为不同的对象。
有人能帮助我们如何获取实例或如何正确地反序列化吗?提前谢谢
我正在使用play-mongoJack。这是我的类。你的对象定义很好。
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.ObjectMapper
import org.mongojack.{MongoCollection, JacksonDBCollection}
import org.mongojack.ObjectId
import org.mongojack.WriteResult
import com.mongodb.BasicDBObject
import scala.reflect.BeanProperty
import javax.persistence.Id
import javax.persistence.Transient
import java.util.Date
import java.util.List
import java.lang.{ Long => JLong }
import play.mongojack.MongoDBModule
import play.mongojack.MongoDBPlugin
import scala.collection.JavaConversions._
class Event (
@BeanProperty @JsonProperty("clientMessageId") val clientMessageId: Option[String] = None,
@BeanProperty @JsonProperty("conversationId") val conversationId: String
) {
@ObjectId @Id @BeanProperty var messageId: String = _ // don't manual set messageId
@BeanProperty @JsonProperty("uploadedFile") var uploadedFile: Option[(String, String, JLong)] = None // the upload file(url,name,size)
@BeanProperty @JsonProperty("createdDate") var createdDate: Date = new Date()
@BeanProperty @Transient var cmd: Option[(String, String)] = None // the cmd(cmd,param)
def createdDateStr() = {
val format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
format.format(createdDate)
}
}
问题内容: 我已经在SO中阅读了一些关于答案的问题,这些问题与JSON属性之间的序列化和反序列化有关,但我似乎无法使其正常工作。 我已经设法将Spring Boot应用程序配置为以所需的格式()返回日期,但在以JSON格式接收值时遇到问题。 这些是我到目前为止所做的所有事情: 增加了对Maven的依赖: 在我的主要课程中指定: 禁用序列化作为时间戳记: 这是我的日期时间实体映射: 在我的数据库中,
我已经将Spring Boot应用程序配置为以我希望的格式()返回日期,但是在JSON中接受这种格式的值有问题。 这些都是我到目前为止所做的事情: 为添加了maven依赖项: 在我的数据库中,我以以下格式将此日期存储为时间戳:。 如果我通过我的控制器访问这个实体,它将返回具有正确startDate格式的JSON。但是,当我尝试使用格式发布并反序列化它时,我会遇到以下异常: 我知道有很多关于这个话题
我有一个问题,将时间值反序列化为本地时间-授予,我对Nodatime很陌生。我想导入一个web服务结果,它以“hh:mm”格式列出了一个时间。除非使用“hh:mm:ss.fff”格式的时间,否则会出现异常。是否有一种方法可以指定一个不同的模式并让“hh:mm”工作? 请看此代码 引发异常:
我们正在使用Drools 7.5.0和Java8。 我们有一个处理传感器事件的服务器应用程序,大约有1200个会话。每个会话都是一个参数化的知识。当我们重新启动服务器时,我们必须恢复所有没有我们希望看到的那么快的会话。因此,尝试通过从数据库加载序列化的知识库来优化恢复过程。 我们使用以下代码来序列化和反序列化知识库: 事件是不可变的,并且具有最终字段。恢复会话时,会出现以下异常: 它被抛出到这行代
看起来杰克逊无法处理同名的属性和属性。