我正在尝试为包含不同类型的对象数组的对象定义一个swagger模式定义.
这是模板对象(以及所有相关对象类型)的json模式.我知道swagger不支持oneOf谓词,所以我只是想弄清楚如何以骄傲的形式描述这个数据结构.我已经尝试了很多这种语法的变体,但没有一个有效,这是我可以根据规范得到的最接近的一些例子和http://json-schema.org/example2.html
swagger: '2.0'
info:
version: 1.0.0
title: IDMU
paths:
definitions:
template:
type: object
properties:
collection:
type: string
name:
type: string
columnValue:
type: string
description:
type: string
outputFile:
type: string
content:
type: string
directives:
type: array
items:
type: object
oneOf:
-
$ref: '#/definitions/directiveRequire'
-
$ref: '#/definitions/directiveReplace'
-
$ref: '#/definitions/directiveReplaceRowSql'
-
$ref: '#/definitions/directiveReplaceRowCsv'
-
$ref: '#/definitions/directiveReplaceColSql'
-
$ref: '#/definitions/directiveReplaceColCsv'
-
$ref: '#/definitions/directiveInsertTag'
-
$ref: '#/definitions/directiveInsertCsv'
-
$ref: '#/definitions/directiveInsertSql'
providerCsv:
type: object
properties:
type:
type: integer
maximum: 3
minimum: 3
tag: …Run Code Online (Sandbox Code Playgroud) 下面的示例显示了一个包含抽象类(Member)集合的类(Club).我很困惑我是否需要TypeAdapter或JsonDeserializer来使反序列化正常工作.序列化在没有任何帮助的情况下工作正常,但反序列化会抛出异常.为了说明我已经构建了以下"克隆"测试.如果有人能展示一个有效的例子,我将非常感激.
第一俱乐部课程
package gson.test;
import java.util.ArrayList;
import com.google.gson.Gson;
public class Club {
public static void main(String[] args) {
// Setup a Club with 2 members
Club myClub = new Club();
myClub.addMember(new Silver());
myClub.addMember(new Gold());
// Serialize to JSON
Gson gson = new Gson();
String myJsonClub = gson.toJson(myClub);
System.out.println(myJsonClub);
// De-Serialize to Club
Club myNewClub = gson.fromJson(myJsonClub, Club.class);
System.out.println(myClub.equals(myNewClub) ? "Cloned!" : "Failed");
}
private String title = "MyClub";
private ArrayList<Member> members = new ArrayList<Member>();
public boolean equals(Club that) {
if …Run Code Online (Sandbox Code Playgroud)