iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Protostuff怎么使用
  • 810
分享到

Protostuff怎么使用

2024-04-02 19:04:59 810人浏览 安东尼
摘要

今天小编给大家分享一下Protostuff怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一

今天小编给大家分享一下Protostuff怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

  首先,引入Maven依赖如下:

  <dependency>

  <groupId>io.protostuff</groupId>

  <artifactId>protostuff-core</artifactId>

  <version>1.4.4</version>

  </dependency>

  <dependency>

  <groupId>io.protostuff</groupId>

  <artifactId>protostuff-runtime</artifactId>

  <version>1.4.4</version>

  </dependency>

  之后,编写序列化工具Util:

  public class SerializeUtil {

  private static class SerializeData{

  private Object target;

  }

  @SuppressWarnings("unchecked")

  public static byte[] serialize(Object object) {

  SerializeData serializeData = new SerializeData();

  serializeData.target = object;

  Class<SerializeData> serializeDataClass = (Class<SerializeData>) serializeData.getClass();

  LinkedBuffer linkedBuffer = LinkedBuffer.allocate(1024 * 4);

  try {

  Schema<SerializeData> schema = RuntimeSchema.getSchema(serializeDataClass);

  return ProtostuffIOUtil.toByteArray(serializeData, schema, linkedBuffer);

  } catch (Exception e) {

  throw new IllegalStateException(e.getMessage(), e);

  } finally {

  linkedBuffer.clear();

  }

  }

  @SuppressWarnings("unchecked")

  public static <T> T deserialize(byte[] data, Class<T> clazz) {

  try {

  Schema<SerializeData> schema = RuntimeSchema.getSchema(SerializeData.class);

  SerializeData serializeData = schema.newMessage();

  ProtostuffIOUtil.mergeFrom(data, serializeData, schema);

  return (T) serializeData.target;

  } catch (Exception e) {

  throw new IllegalStateException(e.getMessage(), e);

  }

  }

  }

  需要注意的是RuntimeSchema.getSchema这块代码,通过翻看源码可以知道,里面已经放置了一个缓存map帮我们缓存生成的内容,所以不需要自己再加缓存了。

  由于protostuff目前不支持序列化list等对象,所以需要使用普通的POJO包装一下。

  最后,来写一个测试吧:

  public static void main(String&hellip;args) throws Exception {

  User user = new User();

  user.setUserId(123456);

  user.setAddress("I am a Good boy");

  user.setNote("this is test");

  List<String> list = new ArrayList<>();

  list.add("record1");

  list.add("record2");

  list.add("record3");

  user.setRecords(list);

  Teacher teacher1 = new Teacher();

  teacher1.setName("语文老师");

  Teacher teacher2 = new Teacher();

  teacher2.setName("数学老师");

  List<Teacher> teachers = new ArrayList<>();

  teachers.add(teacher1);

  teachers.add(teacher2);

  user.setTeachers(teachers);

  byte[] b = serialize(user);

  User rst = deserialize(b, User.class);

  System.out.println(JSON.tojsONString(rst));

  }

  class User {

  private Integer userId;

  private String address;

  private String note;

  private List<String> records;

  private List<Teacher> teachers;

  public Integer getUserId() {

  return userId;

  }

  public void setUserId(Integer userId) {

  this.userId = userId;

  }

  public String getAddress() {

  return address;

  }

  public void setAddress(String address) {

  this.address = address;

  }

  public String getNote() {

  return note;

  }

  public void setNote(String note) {

  this.note = note;

  }

  public List<String> getRecords() {

  return records;

  }

  public void setRecords(List<String> records) {

  this.records = records;

  }

  public List<Teacher> getTeachers() {

  return teachers;

  }

  public void setTeachers(List<Teacher> teachers) {

  this.teachers = teachers;

  }

  }

  class Teacher{

  private String name;

  public String getName() {

  return name;

  }

  public void setName(String name) {

  this.name = name;

  }

  }

  最终的运行结果如下:

  {"address":"I am a good boy","note":"this is test","records":["record1","record2","record3"],"teachers":[{"name":"语文老师"},{"name":"数学老师"}],"userId":123456}

以上就是“Protostuff怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网JavaScript频道。

--结束END--

本文标题: Protostuff怎么使用

本文链接: https://www.lsjlt.com/news/94805.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Protostuff怎么使用
    今天小编给大家分享一下Protostuff怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2024-04-02
  • 基于Protostuff怎么实现Netty编解码器
    本篇内容主要讲解“基于Protostuff怎么实现Netty编解码器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于Protostuff怎么实现Netty编解...
    99+
    2024-04-02
  • Java Kryo,Protostuff,Hessian序列化方式是什么
    本篇内容主要讲解“Java Kryo,Protostuff,Hessian序列化方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java Kryo,Protostuf...
    99+
    2023-07-02
  • Canvas怎么使用
    本篇内容介绍了“Canvas怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!传统的HTML主要用于文本的创建,可以通过<img&...
    99+
    2023-06-04
  • 怎么使用AudioManager
    这篇文章主要讲解了“怎么使用AudioManager”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用AudioManager”吧!当我们在听歌时,当我们在刷小视频时,当我们在看动漫、在...
    99+
    2023-06-04
  • 怎么使用Explain
    本篇内容主要讲解“怎么使用Explain”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Explain”吧!执行计划 (Execution Plan)什么执行计划Postgres 有一个强...
    99+
    2023-06-03
  • 怎么使用Smartour
    这篇文章主要讲解了“怎么使用Smartour”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Smartour”吧!InstallSmartour&nb...
    99+
    2024-04-02
  • 怎么使用Sass
    这篇“怎么使用Sass”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Sass”文章...
    99+
    2024-04-02
  • jQuery.holdReady()怎么使用
    这篇文章主要介绍“jQuery.holdReady()怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jQuery.holdReady()怎么使用”文章能帮助...
    99+
    2024-04-02
  • htop怎么使用
    本文小编为大家详细介绍“htop怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“htop怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 htop使用详解 一....
    99+
    2024-04-02
  • 怎么使用vuex4
    这篇文章主要讲解了“怎么使用vuex4”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用vuex4”吧!一、安装以及初始化vuex4安装:npm install vu...
    99+
    2023-06-25
  • 怎么使用SecureCRT
    这篇文章主要讲解了“怎么使用SecureCRT”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用SecureCRT”吧!简单的介绍SecureCRT 是一款支持SSH(SSH1和SSH2...
    99+
    2023-06-25
  • 怎么使用CSS
    这篇文章将为大家详细讲解有关怎么使用CSS,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如何使用 CSSCSS 样式主要的应用场景是在 HTML 页面中,其作用就是为 HTML 页面设置在浏览器运行后的显...
    99+
    2023-06-27
  • FTP怎么使用
    本篇内容介绍了“FTP怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!软件包安装Red Hat Linux自带VSFTP服务器软件,不...
    99+
    2023-06-27
  • xtrabackup怎么使用
    这篇文章主要介绍了xtrabackup怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇xtrabackup怎么使用文章都会有所收获,下面我们一起来看看吧。xtrabackup是Percona公司CTO V...
    99+
    2023-06-27
  • makefile怎么使用
    这篇文章主要讲解了“makefile怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“makefile怎么使用”吧!概述什么是makefile?或许很多Winodws的程序员都不知道这个...
    99+
    2023-06-22
  • noilinux怎么使用
    这篇文章主要介绍了noilinux怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇noilinux怎么使用文章都会有所收获,下面我们一起来看看吧。▎ 常用操作  1)召唤终端:不论如何,一些基本操作都在终...
    99+
    2023-06-28
  • VueUse怎么使用
    这篇文章主要介绍“VueUse怎么使用”,在日常操作中,相信很多人在VueUse怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VueUse怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!引言...
    99+
    2023-07-02
  • dotenv怎么使用
    这篇文章主要讲解了“dotenv怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“dotenv怎么使用”吧!前言dotenv 是一个用于加载环境变量的库,在 Node.js 应用程序中可...
    99+
    2023-07-04
  • FreeTextBox怎么使用
    FreeTextBox是一个用于ASP.NET的开源HTML编辑器。使用FreeTextBox,你可以在你的网站上添加富文本编辑功能...
    99+
    2023-08-08
    FreeTextBox
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作