json - 用 Dart 解码一个奇怪的 json 文件
问题描述
这需要使用 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:“有效载荷”应该是这样的文字:
{'cmd':'new_friend','user':'test'}
解决方案
如果要将其转换为文本字符串,则需要了解 NDEF 数据格式,因为这看起来像是读取带有 Ndef 记录的 NFC 卡的原始数据转储。
没有多少库只有编码方法的解码方法。
所以关键点是:-
typeNameFormat: 1
是“众所周知的 Ndef 格式”的代码
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 个字节
101
是美国 ASCII 字符的十进制代码e
110
是美国 ASCII 字符的十进制代码n
所以文字是英文的
123
是美国 ASCII 字符的十进制代码{
等等
应该说这不是 JSON,而是 Javascript 中 Javascript 对象的转储
推荐阅读
- javascript - Wordpress 网站在 Facebook 移动浏览器中损坏
- php - PHP-登录按钮未更改为注销按钮
- javascript - 使用 querySelectorAll 在几个图标上添加事件侦听器?
- android - BottomNavigationView 未在模拟器上显示
- python - Flask-Mail 电子邮件未发送
- android - 使用assetlinks.json 排除或仅允许某些网址
- javascript - 是否可以使用 grecaptcha.execute 绕过 hCaptcha?
- javascript - 如何将节点模块“child_process”导入 Angular 项目?
- java - 带有gradle的java 9模块不起作用:错误:找不到模块:
- php - 如何从 GitHub 在 laravel 中添加 SDK?