---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/yql/reference/recipes/modifying-json.md?version=v25.3
  - https://ydb.tech/docs/ru/yql/reference/recipes/modifying-json.md?version=v25.3
  - href: ru/yql/reference/recipes/modifying-json.md
    type: text/markdown
    title: Markdown version
  - href: ../../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/yql/reference/recipes/modifying-json.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Изменение JSON с помощью YQL

В памяти YQL работает с неизменяемыми значениями. Таким образом, когда запросу нужно изменить что-то внутри значения JSON, следует думать об этом как о создании нового значения из частей старого.

Данный пример запроса принимает входной JSON названный `$fields`, парсит его, заменяет ключ `a` на 0, удаляет ключ `d` и добавляет ключ `c` со значением 3:

```yql
$fields = '{"a": 1, "b": 2, "d": 4}'j;
$pairs = DictItems(Yson::ConvertToInt64Dict($fields));
$result_pairs = ListExtend(ListNotNull(ListMap($pairs, ($item) -> {
    $item = if ($item.0 == "a", ("a", 0), $item);
    return if ($item.0 == "d", null, $item);
})), [("c", 3)]);
$result_dict = ToDict($result_pairs);
SELECT Yson::SerializeJson(Yson::From($result_dict));
```

## Смотрите также

- [Yson](https://ydb.tech/docs/ru/yql/reference/udf/list/yson.md?version=v25.3)
- [Функции для работы со списками](https://ydb.tech/docs/ru/yql/reference/builtins/list.md?version=v25.3)
- [Функции для работы со словарями](https://ydb.tech/docs/ru/yql/reference/builtins/dict.md?version=v25.3)
- [Доступ к значениям в JSON с помощью YQL](https://ydb.tech/docs/ru/yql/reference/recipes/accessing-json.md?version=v25.3)
