gpt4 book ai didi

json - 如何从 JAXB 注释类生成 JSON 模式?

转载 作者:行者123 更新时间:2023-12-01 12:46:01 29 4
gpt4 key购买 nike

我有一个像这样的实体类。

@XmlRootElement
public class ImageSuffix {

@XmlAttribute
private boolean canRead;

@XmlAttribute
private boolean canWrite;

@XmlValue;
private String value;
}

我正在使用以下依赖项生成 JSON。

<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.1.4</version>
</dependency>

当我尝试使用以下代码时,(引用自 Generating JSON Schemas with Jackson)

@Path("/imageSuffix.jsd")
public class ImageSuffixJsdResource {

@GET
@Produces({MediaType.APPLICATION_JSON})
public String read() throws JsonMappingException {

final ObjectMapper objectMapper = new ObjectMapper();

final JsonSchema jsonSchema =
objectMapper.generateJsonSchema(ImageSuffix.class);

final String jsonSchemaString = jsonSchema.toString();

return jsonSchemaString;
}
}

服务器提示以下错误信息

java.lang.IllegalArgumentException: Class com.googlecode.jinahya.test.ImageSuffix would not be serialized as a JSON object and therefore has no schema
at org.codehaus.jackson.map.ser.StdSerializerProvider.generateJsonSchema(StdSerializerProvider.java:299)
at org.codehaus.jackson.map.ObjectMapper.generateJsonSchema(ObjectMapper.java:2527)
at org.codehaus.jackson.map.ObjectMapper.generateJsonSchema(ObjectMapper.java:2513)

我该如何解决这个问题?

最佳答案

您是否尝试过配置您的 ObjectMapper 以包含 jaxb 内省(introspection)器?我们使用 spring mvc3 实现 REST 服务,并使用相同的模型对象序列化为 xml/json。

AnnotationIntrospector introspector = 
new Pair(new JaxbAnnotationIntrospector(), new JacksonAnnotationIntrospector());
objectMapper.setAnnotationIntrospector(introspector);
objectMapper.generateJsonSchema(ImageSuffix.class);

编辑:这是我从 jackson 那里得到的输出:

{
"type" : "object",
"properties" : {
"canRead" : {
"type" : "boolean",
"required" : true
},
"canWrite" : {
"type" : "boolean",
"required" : true
},
"value" : {
"type" : "string"
}
}
}

希望这对您有所帮助!

关于json - 如何从 JAXB 注释类生成 JSON 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15915971/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com