文章目录

一、为什么要使用 proto 文件

二、将 proto 文件转成 json 文件

三、使用 test.json 文件


一、为什么要使用 proto 文件

在与后端交互的过程中,数据格式主要是 json ,但如果后端要的数据不是 json 格式,而是通过 proto 文件制定的规则呢?

那就需要使用 protobufjs 将 proto 文件转成 json 或 js 文件 ,因为 JavaScript 是不认识 proto 文件的,所以需要先将 proto 文件转成 JavaScript 所认识的文件

二、将 proto 文件转成 json 文件

需要先下载 protobufjs-cli 依赖

npm i -D protobufjs-cli

然后再当前目录下的终端,执行以下命令

npx pbjs -t json proto/test.proto > proto/test.json

proto/test.proto > proto/test.json :意思是找到当前目录的 proto 文件夹下的 test.proto 文件,将该文件转为 test.json 并将该文件放到 proto 文件夹下

三、使用 test.json 文件

npm i -S protobufjs

由于收到数据是二进制的,虽然拿到的 proto 文件的 json 结构,但这还是不能直接使用,还需要下转 protobufjs 依赖,将收到的二进制数据根据 test.json 文件转成对应的 json 结构

import protobuf from "protobufjs";
import protoJson from "./proto/test.json";
​
// 使用 protobufjs 拿到 test.json 的 json 结构
const root = protobuf.Root.fromJSON(protoJson);
// 找到要翻译的包和字段
const protoData = root.lookupType("interface_message.GeneralDetectionMapData");
​
// data是收到二进制数据,使用 decode 方法,将二进制数据根据【包和字段】转成 json 结构的数据,该过程简称:解密
const data = protoData.decode(data);
​
// 当需要发送修改过后的 proto 数据发送给后端时,使用 encode 可将数据转成 proto 结构的数据,该过程简称:加密
const protoData = protoData.encode(data).finish()

前端使用 proto 文件相关推荐

  1. Caffe源码中caffe.proto文件分析

    Caffe源码(caffe version:09868ac , date: 2015.08.15)中有一些重要文件,这里介绍下caffe.proto文件. 在src/caffe/proto目录下有一个 ...

  2. proto文件导入mysql_导出mysql表结构生成grpc需要的proto文件工具

    使用过grpc的同学都知道,写proto文件比较繁琐,尤其是写message,对应很多字段,为此写了一个简单的从mysql直接读取表结构,生成proto文件的工具. 工具的使用很简单,需要简单的配置, ...

  3. 小猿圈Python学习教程之后端接收前端回传的文件方法

    现在人工智能已经深入到千家万户,随之而来的就是python技术的火爆,今天小猿圈python讲师为你讲解一下后端接收前端回传的文件方法,希望对于刚刚自学python的你有一定的帮助. 如下所示: fi ...

  4. 前端各种类型文件的转换

    最近接到一个微信公众好的开发需求,拍照识别二维码并上传,踩了不少坑.有需要的小伙伴可以看看.还附有各种文件转化的方法,可以马克一下. 欢迎和我一起探讨交流~ file文件的拷贝和改名 // 复制文本域 ...

  5. ProtoBuffer由.proto文件生成.cc/.h

    ProtoBuffer由.proto文件生成.cc/.h 一:编译源码 下载地址:http://code.google.com/p/protobuf/downloads/list  下载后,根据编译说 ...

  6. 前端解析Excel文件js-xlsx与bootstrapTable

    前端解析Excel文件js-xlsx与bootstrapTable 1.引入xlsx.js 2.上传Excel按钮 3.读取Excel文件 4.结果 1.引入xlsx.js <script sr ...

  7. Protobuf之proto文件编写规则

    一. 简单介绍 protobuf文件:就是定义你要的消息(类似java中的类)和消息中的各个字段及其数据类型(类似java类中的成员变量和他的数据类型) 二. Protobuf消息定义 1.消息由至少 ...

  8. ProtoBuffer的.proto文件生成c++

    为什么80%的码农都做不了架构师?>>>    假如我们现在有个.proto文件为Demo.proto 建立一个文件夹,例如在D:\下建立文件夹PB 然后将编译器protoc.exe ...

  9. 关于前端上传文件到后台,文件大小超出限制,导致上传失败的解决办法。

    文章出处:Jiangkuobo,微信:jkb_267460 文章目录 前言 一.使用elementPlus上传图片,出现的问题. 二.验证猜想 1.验证方式: 2.测试结果: 3.我的猜想与验证 三. ...

最新文章

  1. java 脚本语言交互_Java学习笔记--脚本语言支持API
  2. html5 测评游戏,暗黑之王评测:HTML5游戏铸就最华丽ARPG冒险
  3. 信息学奥赛C++语言: 选夏令营旗手1
  4. python网络编程100例_python网络编程
  5. STM32工作笔记0062---定时器中断实验
  6. (转)Page.ClientScript.RegisterStartupScript 与Page.ClientScript.RegisterClientScriptBlock 之间的区别...
  7. 一些常见文件加密软件的破解方法
  8. citypicker城市选择+高德定位,城市编码统一设置
  9. 设置linux开机自动运行某条命令或程序和安装jdk(jar)
  10. react中使用sass报错SassError: Expected newline.
  11. 性能测试实战--计划测试(一)
  12. bixby怎么编程_三星的Bixby可以做什么?
  13. 敏捷开发“松结对编程”系列之十五:L型代码结构(编程篇之一)
  14. 五险一金重要吗?还是趁年轻多赚钱比较重要?
  15. 一文彻底搞懂python面向对象编程(全网最全!!!)
  16. VS对数据库里表的查询
  17. 内存池——第一章 几种常用的内存池技术
  18. 2022年最新吉林道路运输安全员模拟真题题库及答案
  19. vue3.0+vuex+typescript 入门项目描述
  20. 【20220207】【信号处理】多种波峰、波谷检测算法原理介绍和优缺点比较

热门文章

  1. 粒子动画 particles.js 在vue中的使用
  2. 第一节:Android蓝牙系统
  3. EduCoder实践课程——Python零基础到精通 参考答案(三)
  4. 线程池核心线程数最大线程数的意义
  5. Rust基础-关于trait之一
  6. js数组删除对应下标数组bug
  7. 如何高速下载国外资源
  8. pts 和 tty 的区别
  9. Linux开发板 - 02 - eop/uboot下载
  10. java中基于数组的栈实现