---
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/)
