JSON 和 PB 是兩種不同的數據格式,它們之間的轉換在很多場景下都是必須的。本文將介紹如何將 JSON 轉換為 PB。
首先,我們需要確定 PB 的 proto 文件結構。以用戶信息為例:
syntax = "proto3"; message User { string name = 1; int32 age = 2; }
接著,我們需要將 JSON 轉換為 protobuf 對象。使用 pbjs 庫可以方便地將 JSON 轉換為 protobuf 對象。
const pbjs = require('protobufjs'); const userJson = { "name": "張三", "age": 18 } const User = pbjs.loadSync('user.proto').lookupType('User'); const userPb = User.encode(User.create(userJson)).finish();
上述代碼中,我們首先使用 protobufjs 的 loadSync 方法加載 proto 文件,然后使用 lookupType 方法獲取 User 類型,最后使用 encode 方法將 JSON 轉換為 PB。
最后,我們需要將 PB 轉換為二進制數據并進行傳輸。以 Node.js 中的 Buffer 類型為例:
const buffer = Buffer.from(userPb);
當接收到二進制數據后,我們可以使用 PB 的 decode 方法將其轉換為 JSON:
const result = User.decode(buffer); const userJson = User.toObject(result, { longs: String, enums: String, bytes: String });
上述代碼中,我們首先使用 decode 方法將 PB 轉換為 protobuf 對象,然后使用 toObject 方法將 protobuf 對象轉換為 JSON。
使用以上步驟,我們可以方便地進行 JSON 和 PB 的轉換。
下一篇php tp d