# JsonTokenNotify
<span class="source-link">[[Source]](src/json/json_token_notify.md#L-0-1)</span>

Callback interface for the streaming JSON token parser.

Implement this to process JSON tokens as they are parsed, without
materializing the full document tree.

Token emission contract: objects emit ObjectStart, then alternating
Key/value sequences, then ObjectEnd. Arrays emit ArrayStart, then
values, then ArrayEnd. Changes to this emission order would break
consumers — this contract is documented here at the point of coupling.


```pony
interface ref JsonTokenNotify
```

## Public Functions

### apply
<span class="source-link">[[Source]](src/json/json_token_notify.md#L-0-14)</span>


Called for each token parsed from the JSON document. Use `parser` to
access parsed values (`last_string`, `last_number`) and to call
`abort()` if parsing should stop early.


```pony
fun ref apply(
  parser: JsonTokenParser ref,
  token: (JsonTokenNull val | JsonTokenTrue val | JsonTokenFalse val | 
    JsonTokenNumber val | JsonTokenString val | JsonTokenKey val | 
    JsonTokenObjectStart val | JsonTokenObjectEnd val | JsonTokenArrayStart val | 
    JsonTokenArrayEnd val))
: None val
```
#### Parameters

*   parser: [JsonTokenParser](json-JsonTokenParser.md) ref
*   token: ([JsonTokenNull](json-JsonTokenNull.md) val | [JsonTokenTrue](json-JsonTokenTrue.md) val | [JsonTokenFalse](json-JsonTokenFalse.md) val | 
    [JsonTokenNumber](json-JsonTokenNumber.md) val | [JsonTokenString](json-JsonTokenString.md) val | [JsonTokenKey](json-JsonTokenKey.md) val | 
    [JsonTokenObjectStart](json-JsonTokenObjectStart.md) val | [JsonTokenObjectEnd](json-JsonTokenObjectEnd.md) val | [JsonTokenArrayStart](json-JsonTokenArrayStart.md) val | 
    [JsonTokenArrayEnd](json-JsonTokenArrayEnd.md) val)

#### Returns

* [None](builtin-None.md) val

---

