

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# coreJSON 库
<a name="freertos-lib-corejson"></a>

**注意**  <a name="out-of-date-message"></a>
此页面上的内容可能不是 up-to-date。有关最新更新，请参阅 [FreeRTOS.org 库页面](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries)。

## 简介
<a name="freertos-corejson-introduction"></a>

JSON（JavaScript 对象表示法）是一种人类可读的数据序列化格式。它被广泛用于交换数据，例如与 Dev [AWS IoT ice Shadow 服务](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html)交换数据，并且是许多服务的一部分 APIs，例如 GitHub REST API。JSON 由 Ecma International 作为标准进行维护。

coreJSON 库在严格执行 [ECMA-404 标准 JSON 数据交换语法](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)的同时提供支持键查找的解析器。该库使用 C 语言编写，设计符合 ISO C90 和 MISRA C:2012。该库有[证据](https://www.cprover.org/cbmc/)表明内存使用安全，没有堆分配，因此适用于 IoT 微控制器，但也完全可移植到其他平台。

## 内存使用
<a name="freertos-corejson-memory"></a>

coreJson 库使用内部堆栈来跟踪 JSON 文档中的嵌套结构。堆栈在单个函数调用期间存在；它不会被保留。堆栈大小可以通过定义宏 `JSON_MAX_DEPTH`（默认为 32 级）来指定。每一级消耗一个字节。


****  

| coreJSON 的代码大小（使用 GCC for ARM Cortex-M 生成的示例） | 文件 | 使用 -O1 优化 | 使用 -Os 优化 | 
| --- | --- | --- | --- | 
| core\$1json.c | 2.9K | 2.4K | 
| 估计总数 | 2.9K | 2.4K | 