protobuf与json转换小结
protobuf对象不能直接使用jsonlib去转,因为protobuf生成的对象的get方法返回的类型有byte[],而只有String类型可以作为json的key,protobuf提供方法进行转换。
引用maven依赖:
<dependency> <groupId>com.googlecode.protobuf-java-format</groupId> <artifactId>protobuf-java-format</artifactId> <version>1.2</version> </dependency>
protobuf对象转换成json:
String jsonFormat = JsonFormat.printToString(SomeProto);
json转成protobuf对象:
Message.Builder builder =SomeProto.newBuilder(); String jsonFormat = "json字符串"; JsonFormat.merge(jsonFormat, builder);
以上所述是小编给大家介绍的protobuf与json转换小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
Java序列化(Serialization) 机制
Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端.这就需要有一种可以在两端传输数据的协议.Java序列化机制就是为了解决这个问题而产生. 将对象状态转换成字节流之后,可以用java.io包中各种字节流的类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机.对象序列化功能非常简单.强大,在RMI.Socket.JMS.EJB都有应用.对象序列化问题在网络编程中并不是最核心的课题,但却相当重要,具有许多实用意义. java对象序列化不
-
浅谈序列化之protobuf与avro对比(Java)
最近在做socket通信中用到了关于序列化工具选型的问题,在调研过程中开始趋向于用protobuf,可以省去了编解码的过程.能够实现快速开发,且只需要维护一份协议文件即可. 但是调研过程中发现了protobuf的一些弊端,比如需要生成相应的文件类,和业务绑定太紧密,所以在看了AVRO之后发现它完美解决了这个问题. 下面记录下对这两种序列化工具的入门与测评. 一.protobuf基本操作 protobuf简介: Protocol Buffers (a.k.a., protobuf) are Goo
-
protobuf对象二进制序列化存储(详解)
首先下载protobuf库,可以用Nuget. demo: using System; namespace Tools { public class BufHelp { /// <summary> /// 对象锁 /// </summary> private readonly static Object Locker = new Object(); ///// <summary> ///// 读写分离锁 ///// </summary> ///// <
-
protobuf与json转换小结
protobuf对象不能直接使用jsonlib去转,因为protobuf生成的对象的get方法返回的类型有byte[],而只有String类型可以作为json的key,protobuf提供方法进行转换. 引用maven依赖: <dependency> <groupId>com.googlecode.protobuf-java-format</groupId> <artifactId>protobuf-java-format</artifactId>
-
php json转换相关知识(小结)
最近在查找一个bug的时候,发现前端传过来的json空对象 {} ,被php转换成了空数组 [] 存到了数据库里面, 读取并返回给前端的时候,没有做特殊处理,返回了 [] 给前端,导致一些问题. 所以决定梳理一下php的json转换相关的内容. 索引数组转json 看如下示例代码: $a = ['aa', 'bb', 'cc']; $ret = json_encode($a); var_dump($ret); 打印结果是: string(16) "["aa","bb
-
php json转换成数组形式代码分享
写的json转换成数组的一个类和方法,实际上写的方法可以把大部分包含json字符串的数据结构转换成数组,上代码: 复制代码 代码如下: class antiTranJson { protected static function jsonToArray($json) { if(!is_string($json) || is_null(json_decode($json, true))) throw new NotJsonStringException('param
-
详解XML,Object,Json转换与Xstream的使用
详解XML,Object,Json转换与Xstream的使用 1.Xstream的特点: 这里直接引用Xstream官方的叙述: 灵活易用:在更高的层次上提供了简单.灵活.易用的统一接口,用户无需了解项目的底层细节 无需映射:大多数对象都可以在无需映射的情况下进行序列化与反序列化的操作 高速稳定:设计时力求达到的最重要的指标是解析速度快.占用内存少,以使之能够适用于大的对象处理或是对信息吞吐量要求高的系统 清晰易懂:项目采用reflection机制得到无冗余信息的XML文件.所生成 的XML文件
-
将json转换成struts参数的方法
加入对象为{name:'tom','class':{className:'class1'},classMates:[{name:'lily'}]} struts2期待的格式是 name=tom&class.className=class1&classMates[0].name=lily function parseParam(param, key) { var paramStr = ""; if (param instanceof String || param ins
-
Java用 Rhino/Nashorn 代替第三方 JSON 转换库
Java 本身就自带 JS 引擎,自从 Java 1.6 开始就支持了,愈来愈好.我对 js 比较熟悉,因此有个大胆的想法,为什么不用自带 js 引擎作 json 转换呢?这样我们可以不用引入其他第三方库. 背景知识:Java 6 提供对执行脚本语言的支持,这个支持来自于 JSR223 规范,对应的包是 javax.script.默认情况下,Java 6 只支持 JavaScript 脚本,它底层的实现是 Mozilla Rhino,它是个纯 Java 的 JavaScript 实现. 除了 O
-
C#实现DataTable,List和Json转换的方法
本文实例讲述了C#实现DataTable,List和Json转换的方法.分享给大家供大家参考,具体如下: 1. 将DataTable或Ilist<>转换成JSON格式 using System; using System.Data; using System.Text; using System.Collections.Generic; using System.Reflection; /// <summary> /// 将DataTable或Ilist<>转换成JSO
-
PHP数组对象与Json转换操作实例分析
本文实例讲述了PHP数组对象与Json转换操作.分享给大家供大家参考,具体如下: 代码 <?php //数组转对象 function arrayToObject($e){ if( gettype($e)!='array' ) return; foreach($e as $k=>$v){ if( gettype($v)=='array' || getType($v)=='object' ) $e[$k]=(object)arrayToObject($v); } return (object)$e
-
python字典与json转换的方法总结
在python中json分别由列表和字典组成,本文主要介绍python中字典与json相互转换的方法.使用json.dumps可以把字典转成json字符串.使用json.loads可以把json字符串转为字典类型的数据. 1.字典转json 使用json.dumps json.dumps是对python对象编码成json对象,可以把字典转成json字符串. 方法格式 #字典转换成json字符串 json.dumps(dict) 实例 # 创建字典 info_dict = {'name': 'Jo
-
解决springboot整合cxf-jaxrs中json转换的问题
前言 我在将项目用boot重构时, 关于cxf的使用出了一些问题, 主要在实体类和json转换这一方面. 在看了一些晚上的相关答案后, 了解到jaxb默认支持xml格式, 而实现对象转json是需要额外的转换器的,然后在stackoverflow上找到一个解决方法是声明一个bean,注入JsonProvider,但我发现这个可以解决服务端将对象转为json的问题, 而客户端还是会报一个异常: No message body reader has been found for class ....
随机推荐
- 恢复百度云盘本地误删的文件脚本(简单方法)
- 教育网代理 ip列表1
- Java邮件发送程序(可以同时发给多个地址、可以带附件)
- Java RandomAccessFile的用法详解
- oracle存储过程创建表分区实例
- 在ASP.NET 2.0中操作数据之十七:研究插入、更新和删除的关联事件
- rephactor 优秀的PHP的重构工具
- Yii2框架制作RESTful风格的API快速入门教程
- python 链接和操作 memcache方法
- Android Studio使用小技巧:自定义Logcat
- 网页布局设计的标准尺寸
- 基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
- 用jQuery实现圆点图片轮播效果
- jQuery手指滑动轮播效果
- js实现匹配时换色的输入提示特效代码
- Nginx的一些基本功能极速入门
- Ubuntu 16.04下无法安装.deb的解决方法
- spring整合redis以及使用RedisTemplate的方法
- php中计算未知长度的字符串哪个字符出现的次数最多的代码
- NodeJS爬虫实例之糗事百科