/
(?smx)
(?(DEFINE)
  (?<jsonObject>
    \{(?&jsonField)(?>,(?&jsonField))*+\}|
    \{[[:space:]]*+\}
  )
  (?<jsonArray>
    \[(?&jsonValue)(?>,(?&jsonValue))*+\]|
    \[[[:space:]]*+\]
  )
  (?<string>
    "
    [^"\\]*+
    (?>
      (?>
        \\["\\\/rntfb]|
        \\u[[:xdigit:]]{4}
      )++
      [^"\\]*+
    )*+
    "
  )
  (?<number>
    \-?+
    (?>
      [1-9][[:digit:]]*+|
      0
    )
    (?>\.[[:digit:]]++)?+
    (?>[eE][\+\-]?+[[:digit:]]++)?+
  )
  (?<jsonValue>
    [[:space:]]*+
    (?>
      (?&string)|
      (?&number)|
      (?&jsonObject)|
      (?&jsonArray)|
      false|
      true|
      null
    )
    [[:space:]]*+
  )
  (?<jsonField>
    [[:space:]]*+(?&string)[[:space:]]*+\:
    (?&jsonValue)