---
source: crates/tinymist-query/src/hover.rs
expression: content
input_file: crates/tinymist-query/src/fixtures/hover/docs_table.typ
---
Range: 0:20:0:24
```typc
let json(
source: [json],
) = any;
```
======
Reads structured data from a JSON file.
The file must contain a valid JSON value, such as object or array. The JSON values will be converted into corresponding Typst values as listed in the table below.
The function returns a dictionary, an array or, depending on the JSON file, another JSON data type.
The JSON files in the example contain objects with the keys `temperature`, `unit`, and `weather`.
## Example
```typ
#let forecast(day) = block[
#box(square(
width: 2cm,
inset: 8pt,
fill: if day.weather == "sunny" {
yellow
} else {
aqua
},
align(
bottom + right,
strong(day.weather),
),
))
#h(6pt)
#set text(22pt, baseline: -8pt)
#day.temperature °#day.unit
]
#forecast(json("monday.json"))
#forecast(json("tuesday.json"))
```
## Conversion details
| JSON value | Converted into Typst |
| --- | --- |
| `null` | `none` |
| bool | [bool](https://typst.app/docs/reference/foundations/bool/) |
| number | [float](https://typst.app/docs/reference/foundations/float/) or [int](https://typst.app/docs/reference/foundations/int/) |
| string | [str](https://typst.app/docs/reference/foundations/str/) |
| array | [array](https://typst.app/docs/reference/foundations/array/) |
| object | [dictionary](https://typst.app/docs/reference/foundations/dictionary/) |
| Typst value | Converted into JSON |
| --- | --- |
| types that can be converted from JSON | corresponding JSON value |
| [bytes](https://typst.app/docs/reference/foundations/bytes/) | string via [repr](https://typst.app/docs/reference/foundations/repr/) |
| [symbol](https://typst.app/docs/reference/foundations/symbol/) | string |
| [content](https://typst.app/docs/reference/foundations/content/) | an object describing the content |
| other types ([length](https://typst.app/docs/reference/layout/length/), etc.) | string via [repr](https://typst.app/docs/reference/foundations/repr/) |
### Notes
- In most cases, JSON numbers will be converted to floats or integers depending on whether they are whole numbers. However, be aware that integers larger than 2<sup>63</sup>−1 or smaller than −2<sup>63</sup> will be converted to floating-point numbers, which may result in an approximative value.
- Bytes are not encoded as JSON arrays for performance and readability reasons. Consider using [cbor.encode](https://typst.app/docs/reference/data-loading/cbor/#definitions-encode) for binary data.
- The `repr` function is for debugging purposes only, and its output is not guaranteed to be stable across Typst versions.
# Positional Parameters
## source
```typc
type: [json]
```
A path to a JSON file or raw JSON bytes.
======
[Open docs](https://typst.app/docs/reference/data-loading/json/)