Слияние кода завершено, страница обновится автоматически
public class Test {
public static void main(String[] args) {
//开启序列化过程分析
FieldFactory.EXPLAIN = true;
//获得多个版本的协议定义
Map<Integer, Schema<Foo>> multiVersionSchema = ProtostarUtil.getSchema(Foo.class);
//默认的版本是0
Schema<Foo> schema = multiVersionSchema.get(0);
//使用netty的Unpooled申请初始32字节的空间
ByteBuf buffer = Unpooled.buffer(32);
//将foo写入到缓冲区
schema.writeTo(buffer, foo());
String hex = ByteBufUtil.hexDump(buffer);
System.out.println(hex);
//将缓冲区的字节解析为对象
Foo foo = schema.readFrom(buffer);
System.out.println(foo);
}
public static Foo foo() {
Foo foo = new Foo();
foo.setName("张三");
foo.setId(128);
foo.setDateTime(LocalDateTime.of(2020, 7, 7, 19, 23, 59));
return foo;
}
public static class Foo {
private String name;
private int id;
private LocalDateTime dateTime;
@Field(index = 0, type = DataType.STRING, lengthSize = 1, desc = "名称")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Field(index = 1, type = DataType.WORD, desc = "ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Field(index = 3, type = DataType.BCD8421, desc = "日期")
public LocalDateTime getDateTime() {
return dateTime;
}
public void setDateTime(LocalDateTime dateTime) {
this.dateTime = dateTime;
}
}
}
<dependency>
<groupId>io.github.yezhihao</groupId>
<artifactId>protostar</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
更多的例子请参考Test目录
使用该组件的项目:https://gitee.com/yezhihao/jt808-server/tree/master
项目会不定期进行更新,建议star和watch一份,您的支持是我最大的动力。
如有任何疑问或者BUG,请联系我,非常感谢。
技术交流QQ群:[906230542]
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )