# Protocols

[中文]

## JSON

### Removed Built-in JSON Component

The built-in `json` component has been removed from ESP-IDF. Users should migrate to using the `espressif/cjson` component from the IDF Component Manager.

#### Migration Steps

1. Remove json from CMakeLists.txt

   In your component's `CMakeLists.txt`, remove `json` from the `REQUIRES` or `PRIV_REQUIRES` list:

       # Before
       idf_component_register(SRCS "main.c"
                              PRIV_REQUIRES json esp_http_server)

       # After
       idf_component_register(SRCS "main.c"
                              PRIV_REQUIRES esp_http_server)

2. Add espressif/cjson to idf_component.yml

   Add the `espressif/cjson` dependency to your component's `idf_component.yml` file. If this file doesn't exist, create it in your component directory (e.g., `main/idf_component.yml`):

       dependencies:
         espressif/cjson: "^1.7.19"

3. No Code Changes Required

   The API remains the same. Your existing code using cJSON functions will continue to work without modifications:

       #include "cJSON.h"

       // Existing code works unchanged
       cJSON *root = cJSON_Parse(json_string);
       cJSON *item = cJSON_GetObjectItem(root, "key");
       cJSON_Delete(root);

For more information:

- espressif/cjson component

- cJSON on GitHub

## ESP-TLS

Removed Deprecated API

The deprecated `esp_tls_conn_http_new()` function has been removed. Use either:

- `esp_tls_conn_http_new_sync()` for blocking connections

- `esp_tls_conn_http_new_async()` for non-blocking connections

The new API requires you to create the `esp_tls_t` structure using `esp_tls_init()` and provides better control over the connection process.

## ESP-Modbus

The Espressif ESP-Modbus Library (esp-modbus) supports Modbus communication in the networks based on RS485, Wi-Fi, and Ethernet interfaces.

The component `esp-modbus v2 (v2.x.x)` is the current supported component version:

- ESP-Modbus component on GitHub

### Documentation

- ESP-MODBUS stable documentation v2.x.x

- Documentation for legacy version v1.x.x

### Application Examples

Since ESP-IDF version v6.0, the examples for component `esp-modbus v1` which is obsolete have been removed from ESP-IDF.

- legacy esp-modbus v1.x.x examples (esp-idf v5.5)

The examples below demonstrate the ESP-Modbus library of serial and TCP ports for both slave and master implementations respectively.

- mb_serial_slave - demonstrates how to use ESP32-P4 as a Modbus serial slave device with the esp-modbus stack, enabling an external Modbus host to read and write device parameters using the Modbus protocol.

- mb_serial_master - demonstrates how to use the esp-modbus stack port on ESP32-P4 as a Modbus serial master device, capable of reading and writing values from slave devices in a Modbus segment.

- mb_tcp_slave - demonstrates the esp-modbus TCP slave stack port, allowing an external Modbus host to read and write device parameters via the Modbus protocol.

- mb_tcp_master - demonstrates how to use the esp-modbus stack port on ESP32-P4 as a Modbus TCP master device, capable of reading and writing values from slave devices in a Modbus network.

Please refer to the `README.md` documents of each specific example for details.

### Discussions

- Discussions for version v2

Was this page helpful?

- Thank you! We received your feedback.
- If you have any comments, fill in Espressif Documentation Feedback Form.

- We value your feedback.
- Let us know how we can improve this page by filling in Espressif Documentation Feedback Form.