---
layout: "language"
page_title: "jsonencode - Functions - Configuration Language"
sidebar_current: "docs-funcs-encoding-jsonencode"
description: |-
  The jsonencode function encodes a given value as a JSON string.
---

# `jsonencode` Function

`jsonencode` encodes a given value to a string using JSON syntax.

The JSON encoding is defined in [RFC 7159](https://tools.ietf.org/html/rfc7159).

This function maps
[Terraform language values](/docs/language/expressions/types.html)
to JSON values in the following way:

| Terraform type | JSON type |
| -------------- | --------- |
| `string`       | String    |
| `number`       | Number    |
| `bool`         | Bool      |
| `list(...)`    | Array     |
| `set(...)`     | Array     |
| `tuple(...)`   | Array     |
| `map(...)`     | Object    |
| `object(...)`  | Object    |
| Null value     | `null`    |

Since the JSON format cannot fully represent all of the Terraform language
types, passing the `jsonencode` result to `jsondecode` will not produce an
identical value, but the automatic type conversion rules mean that this is
rarely a problem in practice.

When encoding strings, this function escapes some characters using
Unicode escape sequences: replacing `<`, `>`, `&`, `U+2028`, and `U+2029` with
`\u003c`, `\u003e`, `\u0026`, `\u2028`, and `\u2029`. This is to preserve
compatibility with Terraform 0.11 behavior.

## Examples

```
> jsonencode({"hello"="world"})
{"hello":"world"}
```

## Related Functions

* [`jsondecode`](./jsondecode.html) performs the opposite operation, _decoding_
  a JSON string to obtain its represented value.
