- DocumentID: jsonc
  Title: >-
    `jsonc` 
  CategoryID: types
  Summary: >-
    Concatenated JSON
  Description: |-
    The following description is taken from [Wikipedia](https://en.wikipedia.org/wiki/JSON_streaming#Concatenated_JSON):

    > Concatenated JSON streaming allows the sender to simply write each JSON
    > object into the stream with no delimiters. It relies on the receiver using
    > a parser that can recognize and emit each JSON object as the terminating
    > character is parsed. Concatenated JSON isn't a new format, it's simply a
    > name for streaming multiple JSON objects without any delimiters.
    >
    > The advantage of this format is that it can handle JSON objects that have
    > been formatted with embedded newline characters, e.g., pretty-printed for
    > human readability. For example, these two inputs are both valid and produce
    > the same output:
    >
    > #### Single line concatenated JSON
    >
    >     {"some":"thing\n"}{"may":{"include":"nested","objects":["and","arrays"]}}
    >
    > #### Multi-line concatenated JSON
    >
    >     {
    >       "some": "thing\n"
    >     }
    >     {
    >       "may": {
    >         "include": "nested",
    >         "objects": [
    >           "and",
    >           "arrays"
    >         ]
    >       }
    >     }
  Usage:
  Examples: |-
    Because of the similiaries with jsonlines (`jsonl`), the examples here will
    focus on jsonlines examples. However concatenated JSON doesn't need a new line
    separator. So the examples below could all be concatenated into one long line.

    Example JSON lines documents taken from [jsonlines.org](http://jsonlines.org/examples/)
    
    ### Tabulated data

    ```
    ["Name", "Session", "Score", "Completed"]
    ["Gilbert", "2013", 24, true]
    ["Alexa", "2013", 29, true]
    ["May", "2012B", 14, false]
    ["Deloise", "2012A", 19, true] 
    ```

    This format is equatable to `generic` and `csv`.
    
    ### Nested objects
    
    ```
    {"name": "Gilbert", "wins": [["straight", "7♣"], ["one pair", "10♥"]]}
    {"name": "Alexa", "wins": [["two pair", "4♠"], ["two pair", "9♠"]]}
    {"name": "May", "wins": []}
    {"name": "Deloise", "wins": [["three of a kind", "5♣"]]}
    ```
  Hooks:
    ReadArray(): Works with JSON arrays. Maps are converted into arrays
    ReadArrayWithType(): "Works with JSON arrays. Maps are converted into arrays. Element data type is `json` "
    ReadMap(): Not currently supported.
    WriteArray(): Supported
    ReadIndex(): Works against all properties in JSON
    ReadNotIndex(): Works against all properties in JSON
    Marshal(): Supported
    Unmarshal(): Supported
  Detail: |-
    ### Similarities with `jsonl`
    
    The advantage of concatenated JSON is that it supports everything jsonlines
    supports but without the dependency of a new line as a separator.

    Eventually it is planned that this Murex data-type will replace jsonlines
    and possibly even the regular JSON parser. However this concatenated JSON
    parser currently requires reading the entire file first before parsing whereas
    jsonlines can read one line at a time. Which makes jsonlines a better data-
    type for pipelining super large documents. For this reason (and that this
    parser is still in beta), it is shipped as an additional data-type.
  Associations:
    Mimes:
      - "application/jsonc"
      - "application/x-jsonc"
      - "text/jsonc"
      - "text/x-jsonc"

      - "application/jsonconcat"
      - "application/x-jsonconcat"
      - "text/jsonconcat"
      - "text/x-jsonconcat"

      - "application/concatenated-json"
      - "application/x-concatenated-json"
      - "text/concatenated-json"
      - "text/concatenated-json"

      - "application/jsonseq"
      - "application/x-jsonseq"
      - "text/jsonseq"
      - "text/x-jsonseq"

      - "application/json-seq"
      - "application/x-json-seq"
      - "text/json-seq"
      - "text/x-json-seq"
    Extensions:
      - "jsonc"
      - "jsonconcat"
      - "concatenated-json"
      - "jsons"
      - "jsonseq"
      - "json-seq"
  Related:
  - yaml
  - toml
  - hcl
  - mxjson
  - json
  - jsonl
  - generic
  - csv
  - commands/open
  - commands/index
  - commands/element
  - commands/cast
  - commands/format
  - commands/foreach
  - commands/runtime
  - commands/pretty
  - apis/ReadArray
  - apis/ReadMap
  - apis/WriteArray
  - apis/ReadIndex
  - apis/ReadNotIndex
  - apis/Marshal
  - apis/Unmarshal