我们希望序列化Java类的模式,以便任何字段或类上存在的所有注释也序列化到模式中。
我没有找到这样做的工具。
Avro不处理非字符串映射键,FasterXML不处理循环引用。它们都不会将注释序列化到模式中。
是否有任何Java JSON(反)序列化程序可以做到这一点?
如今,Jackson JSON模式模块支持循环依赖。下面是一个适用于2.4.1版的示例:
public class JacksonSchemaCyclic {
public static class Bean {
@JsonPropertyDescription("This is a property description")
public String anExample;
public int anInt;
public Bean aBean;
}
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
mapper.acceptJsonFormatVisitor(Bean.class, visitor);
JsonSchema jsonSchema = visitor.finalSchema();
System.out.println(mapper
.writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema));
}
}
输出:
{
"type" : "object",
"id" : "urn:jsonschema:stackoverflow:JacksonSchemaCyclic:Bean",
"properties" : {
"aBean" : {
"type" : "object",
"$ref" : "urn:jsonschema:stackoverflow:JacksonSchemaCyclic:Bean"
},
"anInt" : {
"type" : "integer"
},
"anExample" : {
"type" : "string",
"description" : "This is a property description"
}
}
}
Apache Thrift在大多数语言中支持复杂的映射键,并且对JSON序列化有相当广泛的支持。类型循环(自引用类型等)最近被引入,尚未在广泛的语言中发布或实现。也就是说,似乎有一个坚定的promise,要在近期将这一能力提升到波兰的高度。
今天使用C dev主干可以实现以下功能。
struct tree {
1: tree left (cpp.ref="")
2: tree right (cpp.ref="")
}
service simple {
void hello(1: string msg, 2: tree t)
}
我给一个有json主体的aws lambda打电话。因此,json的字段与POJO中的字段具有不同的名称。所以我所做的就是在字段中添加@JsonProperty,告诉jackson json中的名称。但出于某种原因,它似乎无法识别它们,并且所有字段都为空。如果我传递一个与POJO具有相同字段名的json,它就会工作。这是我的课: 如果我通过 所有的字段都是空的,并且有明显的ID、userId、ev
问题内容: 我正在用json主体调用aws lambda。因此json的字段与POJO中的字段名称不同。所以我要做的是在字段上添加@JsonProperty来告诉杰克逊json中的名字是什么。但是由于某种原因,它似乎无法识别它们,并且所有字段均为空。如果我传递一个具有与POJO相同的字段名称的json,那么它将起作用。这是我的课: 如果我通过 所有字段均为null,并且具有distinctId,u
课程对象不包装在标记中 某些属性是属性 我需要如何注释我的对象以使FasterXML反序列化这个XML?
例如: 我知道有jackson注解可以这样做,但是我的字段已经用我的持久性注解进行了注解,所以我想避免重复,因为我已经有了我想忽略的注解的字段
我有一个Pojo对象,由Jersey使用jackson序列化: 序列化产生了一个像这样的Json: 但是,当我尝试像这样反序列化来自客户端的消息时: 我得到以下错误: 无法识别的字段“键”(类com.example.server.api.书摘),未标记为可忽略 我不知道问题是来自服务器生成的JSOn还是来自客户端的反序列化。 您知道问题是什么以及如何纠正吗? 非常谢谢。
我一直在尝试将avro通用记录进行串行化,并生成avro串行化的数据发送给Kafka。主要目标是不使用合并模式注册表存储模式,而是将模式与序列化数据一起发送,以便从kafka主题中提取并反序列化。 下面是AvroSerializer用于生成Avro数据的部分。 Kafka中出现的序列化数据如下所示。