cJSON_Parse() 在带有 NextX 模块的瑞萨 MCU 上导致超过 50 行的 JSON 文件解析错误

问题描述 投票:0回答:1

正在开发一个使用瑞萨 MCU 和 NextX 模块的项目,其中我利用 cJSON 库解析文件中的 JSON 数据。在我的 PC 上,无论 JSON 文件有多大,解析都可以正常工作。但是,当我将相同的代码部署到瑞萨 MCU 时,cJSON_Parse() 开始抛出超过 50 行的 JSON 文件的解析错误。

这是我的代码的简化版本:

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"

int main() {
    FILE *fp;
    char buffer[1024];
    cJSON *json;

    fp = fopen("data.json", "r");
    if (fp == NULL) {
        printf("Error opening file.\n");
        return 1;
    }

    fread(buffer, 1, sizeof(buffer), fp);
    fclose(fp);

    json = cJSON_Parse(buffer);
    if (json == NULL) {
        const char *error_ptr = cJSON_GetErrorPtr();
        if (error_ptr != NULL) {
            printf("Error before: %s\n", error_ptr);
        }
        cJSON_Delete(json);
        return 1;
    }

    // Process JSON data here...

    cJSON_Delete(json);
    return 0;
}

尽管在我的 PC 上工作正常,但当带有 NextX 模块的瑞萨 MCU 上的 JSON 文件超过大约 50 行时,cJSON_Parse() 开始失败。在此平台上使用 cJSON 库时,我应该注意什么具体限制或注意事项吗?如何确保在此 MCU 上正确解析较大的 JSON 文件?

任何见解或建议将不胜感激。预先感谢!

c parsing cjson mcu
1个回答
0
投票

与 PC 相比,MCU 的 RAM 和存储空间通常有限得多。 1024 字节的缓冲区大小可能不足以完整保存较大的 JSON 文件,导致传递给 cJSON_Parse() 的数据不完整,这可能会导致解析错误。

© www.soinside.com 2019 - 2024. All rights reserved.