

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

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

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

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

JSON（JavaScript 对象表示法）是一种人类可读的数据序列化格式。它被广泛用于交换数据，例如与 Dev [Amazon IoT ice Shadow 服务](https://docs.amazonaws.cn/iot/latest/developerguide/iot-device-shadows.html)交换数据，并且是许多 API（例如 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 级）来指定。每一级消耗一个字节。


****  
<a name="coreJSON-memory-estimate"></a>
<table>
<thead>
  <tr><th colspan="3">CoreJson 的代码大小（使用适用于 ARM 的 GCC 生成的示例） Cortex-M</th></tr>
  <tr><th>文件</th><th>使用 -O1 优化</th><th>使用 -Os 优化</th></tr>
</thead>
<tbody>
  <tr><td>core\_json.c</td><td>2.9K</td><td>2.4K</td></tr>
  <tr><td>估计总数</td><td>2.9K</td><td>2.4K</td></tr>
</tbody>
</table>
