Prefixes and identifiers SHOULD only consist of the alphabetic US-
ASCII characters A through Z in both uppercase and lowercase, the
numerical digits 0 through 9, and the underscore character, and they
SHOULD NOT begin with an underscore character, numerical digit, or
the characters "xml". The following describes the production of JSON
names in ABNF [RFC5234].
name = ALPHA *( ALPHA / DIGIT / "_" )
Figure 1: ABNF for JSON Names
This restriction is a union of the Ruby programming language
identifier syntax and the XML element name syntax and has two
purposes. First, client implementers using modern programming
languages such as Ruby or Java can use libraries that automatically
promote JSON names to first-order object attributes or members.
Second, a clean mapping between JSON and XML is easy to accomplish
using these rules.