2

我正在尝试使用jsonschema2pojo来生成 Java 类。我在使用“$ref”标签来引用父模式中的其他模式时遇到了麻烦。


设备.json

{
    "$schema": "http://json-schema.org/draft-03/hyper-schema",
    "additionalProperties": false,
    "id": "device:v1",
    "name": "device",
    "properties": {
        "components": {
            "$ref": "spec.json"
            },
        "usage": {
            "$ref": "spec.json"
            }
    }
},
"required": true,
"title": "Device",
"type": "object"
}

这是我的 spec.json

{
    "$schema": "http://json-schema.org/draft-03/hyper-schema",
    "additionalProperties": false,
    "id": "spec:v1",
    "name": "spec",
    "properties": {
        "content": {
            "description" : "Content",
            "type": "string",
            "required": false
    }
},
"required": true,
"title": "spec",
"type": "object"
}

现在我希望创建以下 java 类:

public class Device {
    private Spec components,
    private Spec usage

    .....
}

public class Spec {
    private String content
}

但我明白了

public class Device {
    private Components components,
    private Components usage

    .....
}

public class Components {
    private String content
}

我究竟做错了什么?

4

1 回答 1

1

感谢 joelittlejohn 的回答。我使用spec.json中的 javaType 让它工作


设备.json

{
    "$schema": "http://json-schema.org/draft-03/hyper-schema",
    "additionalProperties": false,
    "id": "device:v1",
    "name": "device",
    "properties": {
        "components": {
            "$ref": "spec.json",
            "type": "object",
            },
        "usage": {
            "$ref": "spec.json",
            "type": "object",
            }
    }
},
"required": true,
"title": "Device",
"type": "object"
}

规范.json

{
    "$schema": "http://json-schema.org/draft-03/hyper-schema",
    "additionalProperties": false,
    "javaType": "my-package-name.Spec"
    "id": "spec:v1",
    "name": "spec",
    "properties": {
        "content": {
            "description" : "Content",
            "type": "string",
            "required": false
    }
},
"required": true,
"title": "spec",
"type": "object"
}
于 2015-05-28T00:24:04.870 回答