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);      }

}

avro 序列化java_Avro 对象序列化与反序列化,及转Json对象序列化处理相关推荐

  1. python序列化和反序列化_Python 中 json 数据序列化和反序列化

    1.Json 定义 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.JSON 的数据格式其实就是 python 里面的字典格式,里 ...

  2. php 返回一个json对象,PHP给前端返回一个JSON对象的实例讲解

    解决问题:用php做后台时,如何给前端发起的AJAX请求返回一个JSON格式的"对象": 说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,总感觉有点无力.最 ...

  3. android 对象数据库中,解析嵌套的JSON对象,并存储在数据库中的Android

    我只是试图让存储在我的JSON文件中的值,并将其保存到SQLite数据库:解析嵌套的JSON对象,并存储在数据库中的Android 这是我的JSON文件: { "list": { ...

  4. c语言josn序列化和反序列化,Flutter 中 JSON 的序列化和反序列化

    前言 Flutter 中没有类似于 Java 中 Gson/Jackson 这样的 JSON 序列化库. 因为这些库都是通过反射实现的,而 Flutter 中不支持反射. 其实 Dart 是支持反射的 ...

  5. 从零开始学前端:json对象,对象的序列化和反序列化 --- 今天你学习了吗?(JS:Day15)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:字符串.数组的方法 - 今天你学习了吗?(JS:Day12/13/14) 文章目录 从零开始学前端:程序猿小 ...

  6. JSON 泛型序列化方法 与 LinkedHashMap转成对象

    JSON 泛型序列化方法 与 LinkedHashMap转成对象 1.说明 1.JSON 泛型序列化方法 2.1 JSON 源码 2.2 示例 2.3 忽略反转义报错 3.LinkedHashMap ...

  7. Json介绍——序列化与反序列化

    概述: Json是一种轻量级的数据交换格式(也叫数据序列化方式).Json采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 Json 成为理想的数据交换语言. 易于人阅读和编 ...

  8. 深入理解JavaScript系列:根本没有“JSON对象”这回事!

    前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢. ...

  9. json对象互转问题记录

    遇到一个神奇的问题 在项目里面前端接收的一个string类型的json转换成对象的时候报错 cn.hutool.core.convert.ConvertException: No Converter ...

最新文章

  1. python在日常工作处理中的应用-记 Python 在实际工作中的第一次应用
  2. 电脑办公人员必看:效率翻倍的11个Excel技巧!
  3. Android工程开发笔记一
  4. 挨踢部落故事汇(6):女攻城狮职位晋升记
  5. 通过OKhttp3 访问 https地址
  6. 详解java的构造方法
  7. 白话文阐述openTSDB
  8. xshell5 Xshell6 商业版的破解版
  9. 六安一中2021高考成绩查询,六安一中
  10. mir2 client: review
  11. 《五》HTML5 多媒体技术
  12. Python性能分析入门——cProfile、可视化、逐行分析、内存分析
  13. DelphiX 组件
  14. VB 操作Excel
  15. 一文说透安全沙箱技术
  16. Wipro被评为印度和亚太及日本地区“2018年Citrix Cloud年度合作伙伴”
  17. POJ 1753 翻棋子 (dfs+递归)。
  18. 如何加入Dave 英语学习小组
  19. 京东运维开发工程师 2019校招卷总结
  20. Sqlserver2008安装与配置(附下载地址)

热门文章

  1. haar级联分类器--人脸检测和匹配
  2. Windows 安装 MongoDB 和 可视化工具Robo3T
  3. MediaWiki初探:安装及使用入门
  4. Exchanger及其用法
  5. linux 运行 dmol3,Dmol3建模及优化
  6. %3c php foreach%3e,PHP 数组函数-数组排序
  7. hive 2.3 mysql_Note23:Hive-2.3.6安装配置
  8. arm linux 加载.a,如何将libc.a链接到arm-linux中的共享库中使用arm-none-linux-gnueabi-gcc...
  9. hbuilder边框代码是什么_看懂HTML代码,摸清国外买家喜欢搜什么关键词
  10. oracle 31640,导数据时ora-31640报错