[C#] 一些關於 CBOR 實作 - Javascript 編碼 + C# 解碼

2022-10-14


最近因為專案關係有碰到 CBOR ( Concise Binary Object Representation ) ,關於 CBOR 是啥可以看看 這篇,對我來說是很少接觸的東西,所以大概看了一下

不過這篇沒有打算要細講解他的規格,主要是因為很多地方都說得很完整了,這篇主要偏於筆記跟實作


這篇要做的,主要是有一個物件 叫做  User ,我在 javascript 中將他 使用 CBOR encode 之後,我再使用 C# 後端這邊將他此解碼

當然這中間我有做一個動作就是在編成 base64 ,畢竟傳遞回 server 透過 Web API 傳 ArrayBuffer 會有點麻煩,所以直接在 前端轉 base64 

再傳到後端,如果你傳遞是用 websocket 當然就直接往 server  傳就可以了


1. 在前端 將一個物件做 CBOR 編碼,這邊我有用到 這位大大的開源 cbor.js  ( reference  : https://github.com/paroga/cbor-js )

引入後,在來就是進行編碼的過程,直接上 code 



2.之後 透過步驟一 我們拿到一個 編碼的字串 "pGJJZGVET05NQWROYW1laeioseeVtum6u2ZTYWxhcnn7QGj/mmtQsPJlQmlydGh4GTIwMTItMDItMTZUMTU6MDA6MDArMDg6MDA="

這時候,我們要如何在後端還原該物件。


先引用一個 library : Dahomey.Cbor 


在來就是 code  的部分,首先只要把 該字串先 透過 base64 decode 回 byte[] 透過套件,就很簡單了


C# Code:


中間我就省略透過 Web API  傳遞的部分了,最近有用到所以大概筆記一下 :)


reference:

https://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript

https://www.readfog.com/a/1648324634492375040

https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string

https://github.com/paroga/cbor-js


當麻許的超技八 2014 | Donma Hsu Design.