仕様
概要
IOTなどで使用を想定されるエンコード方式。軽量。
16進数のバイト配列がエンコードされた場合の状態。
実際の計量度合い
{"name":"山田太郎"}
をエンコード
Base64 encode
JTdCJTIybmFtZSUyMjolMjIlRTUlQjElQjElRTclOTQlQjAlRTUlQTQlQUElRTklODMlOEUlMjIlN0Q
79
bytes
CBOR encode
a1646e616d656ce5b1b1e794b0e5a4aae9838e
38
bytes
テストサイト
cbor.meが死んでいるので、以下がオススメ。
https://cbor.nemo157.com/
各言語実装
JavaScriptサンプル
const json = "{\"aaa\":111}";
const buf2hex = (buffer: ArrayBuffer) => { // buffer is an ArrayBuffer
return [...new Uint8Array(buffer)]
.map(x => x.toString(16).padStart(2, '0'))
.join('');
}
const cbor = require('cbor-web')
buf2hex(cbor.encode(JSON.parse(json)) as ArrayBuffer)
a163616161186f
Javaサンプル
var json = "{\"aaa\":111}";
ObjectMapper om = new ObjectMapper();
Object object = om.readValue(json, Object.class);
CborObject cborObject = CborObject.createFromJavaObject(object);
log.info("{}", Base64.getEncoder().encode(cborObject.toCborByteArray()));
// Byte to Hex16
StringBuilder sb = new StringBuilder();
for (byte b : cborObject.toCborByteArray()) {
sb.append(String.format("%02x", b));
}
log.info("{}", sb);
a163616161186f