最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Can hex format be used with JSON files? If so, how? - Stack Overflow

programmeradmin11浏览0评论

The following object is a valid one in plain Javascript. However, if the same is added to a JSON file, the file does not pass validation. Why is that?

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

The following object is a valid one in plain Javascript. However, if the same is added to a JSON file, the file does not pass validation. Why is that?

var message = {
    "senderID": [ 0x01 ],
    "receiverID": [ 0xFF ],
    "commandCode": [ 0x00, 0x05 ],
    "payload": [ 0xFF ]
}
Share Improve this question asked Oct 5, 2018 at 18:51 Andrei OnigaAndrei Oniga 8,53917 gold badges54 silver badges91 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 46

JSON does not support hexadecimal numbers but they are supported in JSON5. json5.org

The JSON spec supports numbers as values but explicitly does not support octal or hexidecimal. This is in part to increase interchange between languages. You could just as easily represent 0xFF as a string, "0xFF" and parse that out when using it.


From json.org:

A number is very much like a C or Java number, except that the octal and hexadecimal formats are not used.

According to the ECMA-404, 2nd edition, December 2017:

A number is a sequence of decimal digits with no superfluous leading zero. It may have a preceding minus sign (U+002D). It may have a fractional part prefixed by a decimal point (U+002E). It may have an exponent, prefixed by e (U+0065) or E (U+0045) and optionally + (U+002B) or – (U+002D). The digits are the code points U+0030 through U+0039.

The spec also explains why this is restriction is beneficial to both producer and consumer:

JSON is agnostic about the semantics of numbers. In any programming language, there can be a variety of number types of various capacities and complements, fixed or floating, binary or decimal. That can make interchange between different programming languages difficult. JSON instead offers only the representation of numbers that humans use: a sequence of digits. All programming languages know how to make sense of digit sequences even if they disagree on internal representations. That is enough to allow interchange.

发布评论

评论列表(0)

  1. 暂无评论