avro 序列化java_Avro 对象序列化与反序列化,及转Json对象序列化处理

Avro 工具类 序列化与反序列化

public class AvroHelper {

public  byte[]serializeAvroToByteArray(List dcs) {

try {

ByteArrayOutputStream baos =new ByteArrayOutputStream();

DatumWriter pictureDatumWriter =new SpecificDatumWriter();

DataFileWriter dataFileWriter =new DataFileWriter(pictureDatumWriter);

dataFileWriter.create(dcs.get(0).getSchema(), baos);

for (T dc : dcs) {

dataFileWriter.append(dc);

}

dataFileWriter.close();

return baos.toByteArray();

}catch (IOException e) {

e.printStackTrace();

}

return null;

}

public  byte[]serialize(T dc) {

try {

ByteArrayOutputStream baos =new ByteArrayOutputStream();

DatumWriter pictureDatumWriter =new SpecificDatumWriter();

DataFileWriter dataFileWriter =new DataFileWriter(pictureDatumWriter);

dataFileWriter.create(dc.getSchema(), baos);

dataFileWriter.append(dc);

dataFileWriter.close();

return baos.toByteArray();

}catch (IOException e) {

e.printStackTrace();

}

return null;

}

public  ListdeserialzeAvroFromByteArray(Class cls,byte[] dcsByteArray) {

try {

SeekableByteArrayInput sbai =new SeekableByteArrayInput(dcsByteArray);

DatumReader dcDatumReader =new SpecificDatumReader(cls);

DataFileReader dataFileReader =new DataFileReader(sbai, dcDatumReader);

List list = Lists.newArrayList();

while (dataFileReader.hasNext()) {

T pic =null;

pic = dataFileReader.next(pic);

list.add(pic);

}

return list;

}catch (IOException e) {

e.printStackTrace();

}

return null;

}

public T deserialize(Class cls, byte[] data) {

try {

SeekableByteArrayInput sbai =new SeekableByteArrayInput(data);

DatumReader dcDatumReader =new SpecificDatumReader<>(cls);

DataFileReader dataFileReader =new DataFileReader(sbai, dcDatumReader);

if (dataFileReader.hasNext()) {

T pic =null;

pic = dataFileReader.next(pic);

return pic;

}

return null;

}catch (IOException e) {

e.printStackTrace();

}

return null;

}

public String toJSON(Object obj) {

String json =null;

Gson gson =new GsonBuilder()

.registerTypeAdapter(Utf8.class, new Utf8Adapter())

.create();

json= gson.toJson(obj);

return json;

}

public T  toObj(String json,Class cls) {

Gson gson =new GsonBuilder()

.registerTypeAdapter(Utf8.class, new Utf8Adapter())

.create();

return gson.fromJson(json, (Class) cls);

}

}

package com.vacp.common;

import com.google.gson.*;

import org.apache.avro.util.Utf8;

import java.lang.reflect.Type;

public class Utf8Adapterimplements JsonSerializer, JsonDeserializer {

@Override

public Utf8deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext)throws JsonParseException {

if(jsonElement ==null){

return null;

}else {

try {

return new Utf8(jsonElement.toString());

}catch (Exception e) {

return null;

}

}

}

@Override

public JsonElementserialize(Utf8 vehicle, Type type, JsonSerializationContext jsonSerializationContext) {

String value ="";

if(value!=null){

try {

value = vehicle.toString();

}catch (Exception e){

e.printStackTrace();

}

}

return new JsonPrimitive(value);      }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java监听剪贴板_在java中实现windows剪贴板监视

在google上搜了一把&#xff0c;结果搜到了自己原创的文章&#xff0c;不胜窃喜。于是重新格式化了一下&#xff0c;重发之。 package com.ibm.bloghelper; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.F…

mysql workbench 从model建库_使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结...

转载请注明出处&#xff1a;http://blog.csdn.net/dongdong9223/article/details/48318877 本文出自【我是干勾鱼的博客】 1 简单介绍MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。你能够用MySQL Workbench设计和创…

mysql5.7 hibenate5.1_5.7 Spring与Hibernate整合应用

下面以一个简单的实例说明Spring与Hibernate的整合策略&#xff0c;步骤如下。1 在SQL Server 2005中创建数据库表数据库名为XSCJ&#xff0c;表见附录A的登录表。2 创建Web项目命名为“Hibernate_Spring”3 添加Spring的开发能力右击项目名&#xff0c;选择【MyEclipse】→【A…

java 多进程多线程_Java并发编程原理与实战三:多线程与多进程的联系以及上下文切换所导致资源浪费问题...

一、进程考虑一个场景&#xff1a;浏览器&#xff0c;网易云音乐以及notepad 三个软件只能顺序执行是怎样一种场景呢&#xff1f;另外&#xff0c;假如有两个程序A和B&#xff0c;程序A在执行到一半的过程中&#xff0c;需要读取大量的数据输入(I/O操作)&#xff0c;而此时CPU只…

mysql适合什么阵列_如何选择最合适的RAID级别

众所周知&#xff0c;最常用的RAID配置等级分别是RAID-0、RAID-1、RAID-5。这三种RAID等级针对数据的传输速度和保护程度都有所不同:RAID-0(数据 条带化存储阵列)旨在提供速度&#xff0c;在所有RAID中速度最快&#xff0c;但是提供的保护最少;RAID-1(透明或条带化存储镜像)这种…

python写if语句_python if语句

## Python条件和If语句Python支持数学中通常的逻辑条件&#xff1a;* 等于&#xff1a;a b* 不等于&#xff1a;a&#xff01; b* 小于&#xff1a;a * 小于或等于&#xff1a;a < b* 大于&#xff1a;a> b* 大于或等于&#xff1a;a> b这些条件可以几种方式使用&am…

python用法查询笔记_Python爬虫学习笔记(三)

handler处理器自定义 - Cookies && URLError && json简单使用Cookies&#xff1a;以抓取https://www.yaozh.com/为例Test1(不使用cookies)&#xff1a;代码&#xff1a;import urllib.request# 1.添加URLurl "https://www.yaozh.com/"# 2.添加请求头…

java 线程 交给spring_浅谈Java中spring 线程异步执行

多线程并发处理起来通常比较麻烦&#xff0c;如果你使用spring容器来管理业务bean&#xff0c;事情就好办了多了。spring封装了Java的多线程的实现&#xff0c;你只需要关注于并发事物的流程以及一些并发负载量等特性&#xff0c;具体来说如何使用spring来处理并发事务&#xf…

java编程实现素数环_结对编程(JAVA实现)

项目成员&#xff1a;黄思扬(3117004657)、刘嘉媚(3217004685)二、PSP表格PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)Planning计划6040 Estimate 估计这个任务需要多少时间6040Development开发14401505 Analysis 需求分析3015 Design Spec 生成设计文档…

自学java编译老是出错_为什么按照书上的代码,编译老是出错?

老是又小伙伴在群里说我的代码是按照书上的代码敲的&#xff0c;就是编译不过&#xff1f;想不通呀&#xff01;目前市面上的一些书都是十来年以前编写的了&#xff0c;你不幸看的还是这些书&#xff0c;错误原因就在这里。比如谭浩强的C语言程序设计这个本书都出了N版了&#…

java版的中世纪战争_世界战争英雄设置-火焰纹章英雄英雄地图及AI命令设置

英雄地图及AI命令设置游戏中练级塔中的AI设置和故事地图中的一样&#xff0c;所以如果故事地图中的AI是主动出击的&#xff0c;那练级塔一样的地图也是主动出击。故事地图中配置有5个敌人&#xff0c;在练级塔中也一样会配置5个敌人。不同的是职业可能会发生变化&#xff0c;但…

python pip安装依赖的常用软件源

目录 引言 一、什么是镜像源&#xff1f;​​​​​​​ 二、清华源 三、阿里源 四、中科大源 五、豆瓣源 六、更多资源 引言 在软件开发和使用过程中&#xff0c;我们经常需要下载和更新各种软件包和库文件。然而&#xff0c;由于网络环境的限制或者服务器的负载&#…

java虚拟机规范 51cto_java虚拟机

最近学习java虚拟机做了一些整理&#xff0c;会陆续发完。Java虚拟机一、概念&#xff1a;当我们谈到java虚拟机的时候&#xff0c;有可能指下面3个方面&#xff1a;1)&#xff1a;抽象java虚拟机的规范。2)&#xff1a;一个java虚拟机具体的实现。------实现是指&#xff1a;实…

java重定向链接页面变小_java web的进来看一下!页面重定向的异常!帮忙看一下!谢谢了!...

我用login.jsp进行登录留言板的管理页面用一个servlet进行身份验证。成功----->通过request.getRequestDispatcher("/admin/secure/manage?qlist").forward(request, response);return;其中/admin/secure/manage是ManageServlet的映射路径。来登录到manage的管理…

java数组设置结束_Java 数组最佳指南,快收藏让它吃灰

两年前&#xff0c;我甚至写过一篇文章&#xff0c;吐槽数组在 Java 中挺鸡肋的&#xff0c;因为有 List 谁用数组啊&#xff0c;现在想想那时候的自己好幼稚&#xff0c;好可笑。因为我只看到了表面现象&#xff0c;实际上呢&#xff0c;List 的内部仍然是通过数组实现的&…

java窗口只能点一个_java – 为什么界面只能在顶级类中声明?

Won’t inner class become top-level class if I put it into another Class file?不,它仍然是一个内部类,文件名指示(IIRC它是OuterClass $InnerClass.class).内部类可以访问外部类的属性,即它们依赖于它们的外部类’实例.使用界面,您无法做到这一点.想到一个完全不相关的类…

Mysql 中Sql控制流语句_DCL语句/控制流语句

一、(1)DCL(数据控制语言)主要是数据库管理员用来管理其他用户权限时使用的语句&#xff1b;可以授予的权限包括以下&#xff1a;列权限&#xff1a;和表中的一个具体列相关、表权限&#xff1a;和一个具体数据表中的所有数据相关、数据库权限&#xff1a;和一个具体数据库中的…

Java7运行applet_Java applet不会在JRE7下运行,控制台中不会显示错误

在Windows 7,64位下&#xff0c;由于升级到JRE-7 32位&#xff0c;在IE9 32位或Chrome下&#xff0c;我无法运行诸如this one之类的小程序。在Applet矩形内&#xff0c;我看到消息“Error。Click for details”点击applet框(空白)会出现一个对话框&#xff1a;Application Erro…

同包类 和 其他类 java_关于继承:为什么Java中的“protected”修饰符允许访问同一个包中的其他类?...

在Java中&#xff0c;具有"受保护"修饰符的成员不仅可以由同一个类和子类访问&#xff0c;还可以由同一个包中的每个人访问&#xff1f;我想知道语言设计的原因&#xff0c;而不是实际的应用程序(例如&#xff0c;测试)1坦率地说我也想知道为什么。 它总是让我感到震…

java打印已经被加载的类_使用URLClassLoader加载类,不会报错,但被加载类中的内容也没有打印出来...

被加载类和加载类的程序在一个文件夹下&#xff1b;运行没有任何结果&#xff1a;D:java_exercise>javac URLTest.javaD:java_exercise>java URLTestD:java_exercise>加载类&#xff1a;import java.net.*;import java.io.File;import java.net.URLClassLoader ;publi…