尝试使用nlohmann/json解析一些 CBOR 有效负载:
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
uint8_t data[] = {0xa2, 0x43, 0x72, 0x65, 0x74, 0x81, 0x0d, 0x47,
0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0xf5};
json jresp = json::from_cbor(data, data + (sizeof data / sizeof data[0]));
return 0;
}
失败并出现此错误:
libc++abi.dylib:以 nlohmann::detail::parse_error 类型的未捕获异常终止:[json.exception.parse_error.113] 在字节 2 处解析错误:解析 CBOR 字符串时出现语法错误:预期长度规范(0x60-0x7B ) 或不定字符串类型 (0x7F);最后一个字节:0x43
我尝试了其他解码器,它们能够解码该有效载荷。
Python 的cbor包能够对其进行解码:
import cbor
print(cbor.loads(b"\xa2\x43\x72\x65\x74\x81\x0d\x47\x73\x75\x63\x63\x65\x73\x73\xf5"))
{b'ret':[13],b'success':真}
cbor.me 的CBOR游乐场能够对其进行解码:
16 字节:
A2 # map(2)
43 # bytes(3)
726574 # "ret"
81 # array(1)
0D # unsigned(13)
47 # bytes(7)
73756363657373 # "success"
F5 # primitive(21)
诊断:
{'ret': [13], 'success': true}
是否有一些标志可以传递给nlohmann/json以使其解码?
试图通过无济于事strict=false
。json::from_cbor()