十六进制格式可以与JSON文件一起使用吗?如果是这样,怎么办?

时间:2018-10-05 18:51:15

标签: javascript json

以下对象是纯Java语言中的有效对象。但是,如果将相同的内容添加到JSON文件,则该文件不会通过验证。为什么会这样?

var message = {
    "senderID": [ 0x01 ],
    "receiverID": [ 0xFF ],
    "commandCode": [ 0x00, 0x05 ],
    "payload": [ 0xFF ]
}

3 个答案:

答案 0 :(得分:4)

JSON不支持十六进制数字,但JSON5支持它们。 json5.org

答案 1 :(得分:1)

JSON规范支持数字作为值,但明确不支持八进制或十六进制。这部分是为了增加语言之间的互换性。您可以轻松地将0xFF表示为字符串"0xFF"并在使用时将其解析出来。


来自json.org

  

数字非常类似于C或Java数字,除了不使用八进制和十六进制格式。

根据ECMA-404 Final draft

  

数字是十进制数字序列,没有多余的前导零。它可能有一个减号   符号(U + 002D)。它的分数部分可能以小数点(U + 002E)为前缀。它可能有一个指数,   前缀为e(U + 0065)或E(U + 0045),以及可选的+(U + 002B)或–(U + 002D)。数字是代码   指向U + 0030到U + 0039。

答案 2 :(得分:0)

由于舍入误差,交换不是 100% 准确。例如,在读取 -10.631768226623536 时,Python 将其设为 -10.631768226623535,而 C++ 设为 -10.631768226623536。这是因为 Python 和 C++ 处理舍入误差的方式不同。 如果 Json 支持十六进制数,就不会出现这种不一致的情况。

(这不是答案。它是对上面答案的评论,但不小心添加为答案。)