JSON多态性

Cod*_*nci 6 java polymorphism json

我在客户端有一个javascript对象列表,它是用户执行的"事件"列表.用户准备好后,我想将其发送到服务器.事件的顺序很重要,因此保留列表顺序是必要的.

我想要做的是有一个JSON库(不介意哪一个)将JSON绑定到我的Java代码中的一些Event对象,其中Event是一个抽象类,我有3个具体的类都扩展了Event (比如说EventA,EventB和EventC).

理想的情况就像是

List<Event> events = jsonlibrary.deserialise(jsonString);
Run Code Online (Sandbox Code Playgroud)

其中可能包含诸如的项目列表

[eventA, eventC, eventA, eventA, eventB]
Run Code Online (Sandbox Code Playgroud)

这是可能的,还是我必须手动检查JSON树,并反序列化json数组的各个元素?

Phi*_*ipp 6

JSON对象只是键/值对,不包含类型信息.这意味着无法自动识别JSON对象的类型.您必须在服务器端实现一些逻辑,以找出您正在处理的事件类型.

我建议使用一个带有json字符串的工厂方法,解析它以找出它是什么类型的事件,构建一个正确子类的Event对象并返回它.