fileTypes json foldingStartMarker (?x: # turn on extended mode ^ # a line beginning with \s* # some optional space [{\[] # the start of an object or array (?! # but not followed by .* # whatever [}\]] # and the close of an object or array ,? # an optional comma \s* # some optional space $ # at the end of the line ) | # ...or... [{\[] # the start of an object or array \s* # some optional space $ # at the end of the line ) foldingStopMarker (?x: # turn on extended mode ^ # a line beginning with \s* # some optional space [}\]] # and the close of an object or array ) keyEquivalent ^~J name JSON patterns include #value repository array begin \[ beginCaptures 0 name punctuation.definition.array.begin.json end \] endCaptures 0 name punctuation.definition.array.end.json name meta.structure.array.json patterns include #value match , name punctuation.separator.array.json match [^\s\]] name invalid.illegal.expected-array-separator.json constant match \b(?:true|false|null)\b name constant.language.json number comment handles integer and decimal numbers match (?x: # turn on extended mode -? # an optional minus (?: 0 # a zero | # ...or... [1-9] # a 1-9 character \d* # followed by zero or more digits ) (?: \. # a period \d+ # followed by one or more digits (?: [eE] # an e character [+-]? # followed by an option +/- \d+ # followed by one or more digits )? # make exponent optional )? # make decimal portion optional ) name constant.numeric.json object begin \{ beginCaptures 0 name punctuation.definition.dictionary.begin.json comment a JSON object end \} endCaptures 0 name punctuation.definition.dictionary.end.json name meta.structure.dictionary.json patterns comment the JSON object key include #string begin : beginCaptures 0 name punctuation.separator.dictionary.key-value.json end (,)|(?=\}) endCaptures 1 name punctuation.separator.dictionary.pair.json name meta.structure.dictionary.value.json patterns comment the JSON object value include #value match [^\s,] name invalid.illegal.expected-dictionary-separator.json match [^\s\}] name invalid.illegal.expected-dictionary-separator.json string begin " beginCaptures 0 name punctuation.definition.string.begin.json end " endCaptures 0 name punctuation.definition.string.end.json name string.quoted.double.json patterns match (?x: # turn on extended mode \\ # a literal backslash (?: # ...followed by... ["\\/bfnrt] # one of these characters | # ...or... u # a u [0-9a-fA-F]{4} # and four hex digits ) ) name constant.character.escape.json match \\. name invalid.illegal.unrecognized-string-escape.json value comment the 'value' diagram at http://json.org patterns include #constant include #number include #string include #array include #object scopeName source.json uuid 0C3868E4-F96B-4E55-B204-1DCB5A20748B