Итак, есть некоторые проблемы с сериализацией, некоторые из них легкие, но я узнаю кое-что, что может помочь другим людям с этой проблемой и пониманием класса case в целом.
Во-первых, я использовал javap(.exe) для просмотра java-кода из файлов классов в Job.scala с содержащимся классом case с именем Job, есть два файла классов: Job$.class и Job.class.
Работа$.класс:
public final class logic.Queue.Task.Job$ extends scala.runtime.AbstractFunction4<java.lang.Object, java.lang.String, scala.collection.immutable.List<logic.Job.TaskRequest>, org.Server.Job.TaskContainer, logic.Queue.Task.Job> implements scala.Serializable {
public static final logic.Queue.Task.Job$ MODULE$;
public static {};
public final java.lang.String toString();
.
.
.
}
Работа.класс:
public class logic.Queue.Task.Job implements scala.Product,scala.Serializable {
public static org.Server.Job.TaskContainer apply$default$4();
public static scala.collection.immutable.List<logic.Job.TaskRequest> apply$default$3();
.
.
.
}
Это означает, что класс scala case является анонимным внутренним классом, и когда вы пытаетесь его сериализовать (и вы можете, поскольку оба реализуют scala.Serializable), я решил это, добавив в подпись:
@JsonAutoDetect
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
@JsonCreator
case class Job(stat: Int = CmsTypeMsg.Pending, jobName: String = "", taskRequestIn: List[TaskRequest] = Nil, taskIn: TaskContainer = new TaskContainer())
Для получения дополнительной помощи по этому вопросу: http://www.jpalomaki.fi/?p=527 Десериализация Json в другую иерархию классов с использованием Джексона
person
user1120007
schedule
06.07.2015