用 Dart 解码一个奇怪的 json 文件

Decoding a weird json file with Dart

这需要用 Dart 解码成可读的 JSON 问题是。我不知道它是什么,我不知道该怎么做。

{
mifare: {
identifier: [4, 119, 66, 185, 196, 77, 112], 
mifareFamily: 2, 
historicalBytes: []
}, 
ndef: {
isWritable: true, 
maxSize: 492, 
cachedMessage: 
{records: 
[{identifier: [], 
typeNameFormat: 1, 
type: [84], 
payload: [2, 101, 110, 123, 39, 99, 109, 100, 39, 58, 39, 110, 101, 119, 95, 102, 114, 105, 101, 110, 100, 39, 44, 39, 117, 115, 101, 114, 39, 58, 39, 116, 101, 115, 116, 39, 125]}]}}}

有人知道该怎么做吗? PS:'payload' 应该是这样的文本:

{'cmd':'new_friend','user':'test'}

如果你想把它转换成你的文本字符串,那么你需要了解 NDEF 数据格式,因为这看起来像是读取带有 Ndef 记录的 NFC 卡的原始数据转储。

没有多少图书馆有解码方法只有编码方法。

所以重点是:-

typeNameFormat: 1 是“Well known Ndef format”的代码

type: [84]是Ndef文本记录的代码

这会引导您指定 Ndef 文本记录 https://github.com/haldean/ndef/blob/master/docs/NFCForum-TS-RTD_Text_1.0.pdf

然后

payload: [2, 101, 110, 123, 39, 99, 109, 100, 39, 58, 39, 110, 101, 119, 95, 102, 114, 105, 101, 110, 100, 39, 44, 39, 117, 115, 101, 114, 39, 58, 39, 116, 101, 115, 116, 39, 125]

2 是 2 个字节的语言标识符长度

101e

的美国 ASCII 字符的十进制代码

110n

的美国 ASCII 字符的十进制代码

所以文字是英文的

123{

的美国 ASCII 字符的十进制代码

等等

应该说这不是 JSON 而是 Javascript 对象在 Javascript

中的转储